Чем отличаются эти операторы Pointer *p = &i, h = &j?

Я пытался работать с указателями, и я столкнулся с этой проблемой. В этом коде... p, h два указателя... я приравнял *p = &i, h = &j; и напечатал значения, которые я ожидал, что * p будет содержать адрес, а p будет иметь адрес, указывающий на i, а в случае h h будет иметь адрес, а * h будет o/p иметь значение j.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i =10;
int *p = &i;
int j =30;
int *h;
h = &j;
printf("Hello world!\n %d , %d \n" , *p , p);
printf("Hello world!\n %d , %d \n" , *h , h);
return 20;
}

Но мои o/p в случае p и i меняются местами.. Почему это так.. Как компилятор различает ч / б эти два вида операторов.... *p = &i; и *p = i;

о / п так

Hello World!
10 , 2359060
Hello World!
30, 2359056

Извините, если заголовок Вопроса был неправильным. Я не знал, как описать ситуацию. Любые ссылки на подобные проблемы будут оценены

5 ответов

Решение

Заявление

int *p = &i; 

объявляет p как указатель на int, и инициализирует его адресом i. Это как писать

int *p;
p = &i;

После этих заявлений p содержит адрес i, а также *p значение i, Как отметил Джон Кугельман, используйте %p спецификатор формата для печати указателей.

Это утверждение

int *p = &i;

Значит это:

int *p;
p = &i;

p определяется как целочисленный указатель (int *), то ему присваивается значение &i (адрес целочисленной переменной i).

Это не то же самое, что *p = &i

Чтобы быть менее запутанным, вы можете использовать:

int* p = &i;

Тогда вы всегда можете иметь в виду, что p относится к адресу, а *p относится к значению

Я очень согласен со вторым определением, потому что это правильный способ определения указателя. Видите ли, вы должны определить заголовок, а затем назначить ему переменную, на которую нужно указать, без *,

Если i является переменным холдингом 10и вы определяете p как int * держа адрес iтогда ваши высказывания означают:

printf("Hello world!\n %d , %d \n" , 
    *p ,    // value inside p, ie value of i, 10
    p);     // value OF p, which is the address of i
Другие вопросы по тегам