나는 포인터로 작업하려고 시도했는데이 문제가 발생했습니다. 이 코드에서 p, h는 두 포인터입니다 ... i = equality * p = & i, h = & j; 그리고 값을 인쇄 내 기대는 * p는 주소를 포함하고 p는 i를 가리키는 주소를 가지며 h의 경우 h는 주소를 가질 것이고 * h는 o/p의 j 값이 될 것이다.이 포인터 문은 어떻게 다른가요? p = & i, h = & 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와 나는 반전 .. 왜 그것이 그렇게 .. 어떻게 컴파일러 차별화의 B/... 문이 두 종류의 w * P = &을한다 i; * p = i;
오/P 내가 질문 제목이 잘못 있다면 죄송이
Hello World!
10 , 2359060
Hello World!
30, 2359056
같다 .. 나는 상황 .. 비슷한 문제에 대한 링크를 설명하는 방법을 알고하지 않은 것
'p'는'int'가 아닙니다 ->'printf ("% d \ n", p);는 좋은 코드가 아닙니다. 'printf ("% p \ n", p);'를 사용하는 것이 더 좋습니다. 'printf ("% d \ n", (void *) p);' – chux
가장 좋은 하드웨어에는 차이점이 없습니다. 실제로 'void *'에 포인터를 던져 넣기 전에'varargs '에 넣는 것은 아무 것도하지 않습니다. 당신은''% p "'가 더 읽기 쉬운 방법으로 그것을 인쇄한다고 주장 할 수 있습니다,하지만 교과서 경고는 현실 세계에서는 거의 의미가 없습니다. – Blindy