使用此代码:
int a = 10;
int *ap = 4;
printf("%d", ap);
当我用4初始化int指针ap时会发生什么?
为什么
printf("%d", ap);
工作,但是
printf("%d", *ap);
引发错误?
最佳答案
这是因为4
不是有效的内存地址(在您的环境中)。如果尝试取消引用具有无效内存地址的指针,则会出现错误。您应该使用适当的内存地址对其进行初始化
int a = 4;
int *ap = &a;
printf("%d", *ap);
要么
int *ap = malloc(sizeof(int));
*ap = 4;
printf("%d", *ap);
free(ap);
关于c - 指针的引用和整数初始化之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16259591/