아래에 3 가지 차이점이 있습니다. 나는 왜 ex1은 ex2에 대해 동일한 출력을 가지고 있고 ex3에 대한 출력이 다른지, 왜 ex2가 ex3과 다른지 이해할 수 없다.C의 기본 포인터?
EX1
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int x=2;
int *y;
y = &x;
printf("value: %d\n", *y);
printf("address: %d\n", y);
return EXIT_SUCCESS;
}
출력
value: 2
address: 2686744
EX2
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int x=2;
int *y = &x;
printf("value: %d\n", *y);
printf("address: %d\n", y);
return EXIT_SUCCESS;
}
OU
value: 2
address: 2686744
EX3 tput을
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int x=2;
int *y;
*y = &x;
printf("value: %d\n", *y);
printf("address: %d\n", y);
return EXIT_SUCCESS;
}
출력
value: 2686744
address: 2130567168
I은 STAR가 (Y)이이되어야 생각하면 I가 포인터 BIG 오해가없는 (INT) 나는 그와 함께 시작한다. (int 모든 답
에
참조 1- 값과 r 값은 컴파일러 경고 수준을 높이십시오, 당신은 –
EX3이 유효하지 않습니다 ... 문제에 대해 이야기한다. 'y'가 설정되지 않았다면'* y'를 취할 수 없습니다. – asveikau
또한 포인터를 출력 할 때'% d '가 아닌'% p'를 사용하는 습관을 가져야합니다. (그러나 여전히'* y'와 같은 정수형에는'% d'를 사용하십시오.) – asveikau