使用此代码:

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/

10-11 23:22