scanf需要一个指针参数。为什么我们不能传递指针变量?
int* x;
scanf("%d", x);
printf("%d", *x);
这不会给出输出。.为什么?怎么了?
scanf
的%d
格式说明符需要一个指向int
的指针,即一个int *
,这就是你要传递的。 因此,您正确调用了该函数。
出错的地方是指针x
从未初始化,因此不会指向任何地方。 然后,scanf
尝试将此单位化值读取为地址,并随后读取该虚假地址上的内容。 读取未初始化的值会调用未定义的行为。
您需要通过为其分配int
变量的地址或使用malloc
动态分配内存来指出x
。
int a;
int *x = &a;
或:
int *x = malloc(sizeof(int));