-5
scanf가 포인터 인수를 취합니다. 포인터 변수를 전달할 수없는 이유는 무엇입니까?초기화하지 않고 포인터로 scanf를 사용하는 것이 잘못된 이유는 무엇입니까?
int* x;
scanf("%d", x);
printf("%d", *x);
이것은 출력을 제공하지 않습니다. 이유는 무엇입니까? 뭐가 잘못 되었 니? scanf
에
scanf가 포인터 인수를 취합니다. 포인터 변수를 전달할 수없는 이유는 무엇입니까?초기화하지 않고 포인터로 scanf를 사용하는 것이 잘못된 이유는 무엇입니까?
int* x;
scanf("%d", x);
printf("%d", *x);
이것은 출력을 제공하지 않습니다. 이유는 무엇입니까? 뭐가 잘못 되었 니? scanf
에
%d
형식 지정자는 int
에 대한 포인터를 기대, 즉 당신이 전달하는 것입니다 int *
. 그래서 함수를 올바르게 호출하고 있습니다.
어디에 잘못 되었습니까? x
포인터는 초기화되지 않았으므로 아무데도 가리 키지 않습니다. scanf
은이 단위 화 된 값을 주소로 읽은 다음 그 가짜 주소에있는 것을 읽습니다. 초기화되지 않은 값을 읽으면 undefined behavior이 호출됩니다.
int
변수의 주소를 할당하거나 malloc
을 사용하여 메모리를 동적으로 할당하여 어딘가에 x
지점을 지정해야합니다.
int a;
int *x = &a;
또는 :
int *x = malloc(sizeof(int));
는 초급 수준의 C 책을 읽어 보시기 바랍니다. 먼저 변수를 초기화해야합니다 ... – Lundin
감사합니다 ... 포인터가 먼저 값을 가져야합니다 ... 이제 작동합니다 .. int a = 0; int * x = & a; scanf ("% d", x); printf ("% d", * x); – EarlyManX215