gpt4 book ai didi

c - 在没有初始化的情况下使用带有指针的 scanf 有什么问题?

转载 作者:行者123 更新时间:2023-11-30 21:36:40 24 4
gpt4 key购买 nike

scanf 接受一个指针参数。为什么我们不能传递一个指针变量?

int* x;
scanf("%d", x);
printf("%d", *x);

这不会给出输出..为什么?怎么了?

最佳答案

scanf%d 格式说明符需要一个指向 int 的指针,即 int *,这就是你正在传递的内容。所以您正确地调用了该函数。

你出错的地方是指针x从未初始化过,因此没有指向任何地方。 scanf 然后尝试将此未初始化的值作为地址读取,并随后读取该伪造地址中的内容。读取未初始化的值会调用 undefined behavior .

您需要使 x 指向某个地方,可以通过为其分配 int 变量的地址,也可以使用 malloc 动态分配内存.

int a;
int *x = &a;

或者:

int *x = malloc(sizeof(int));

关于c - 在没有初始化的情况下使用带有指针的 scanf 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46709204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com