C语言编程指向指针的指针问题

疑问:指向指针的指针
#include
int main()
{
int ch;
int **p;
*p=NULL;
printf("hello world!\n");
}
为什么不能运行?

而把int ch;去掉之后
#include
int main()
{
int **p;
*p=NULL;
printf("hello world!\n");
}
就能正常运行?

c

5个回答

int **p;
*p=NULL;

指针在使用之前一定要初始化,让这个指针指向一个变量,
比如 int ia = 9; int * pia = & ia; *pia = 7; 这样pia这个指针就可以访问ia了。
int **p;
*p=NULL; 这个指针在使用之前没有初始化,编译会报错的

hdw5567
hdw5567 回复chenduxiuyi: 你这个在VS上编译不过啊
接近 3 年之前 回复
chenduxiuyi
chenduxiuyi 兄弟 你没有看清我的问题啊 你把两段代码都运行一下试试
接近 3 年之前 回复
1.代码1、代码2都不会正常运行,首先声明的是,这里与int ch没有任何关系;
2.你用的什么编译器,第2个代码能够正常运行?好吧,如果能够运行,那只能是说明你的运气好,但是多数情况下,这段代码是会出现段错误的;
因为你这里的指针p是一个野指针,至于指向哪一个地址空间,程序员是无从得知的;只有编译器知道,若碰巧好该指针执行一个没有任何变量使用的
空闲的地址,让其为NULL不会有问题,但是若其指针刚好指向一系统在使用的地址空间,让其为NULL会出现段错误;

你的头文件没有写完整 include

确实是指针的问题呀
我编译了一下都无法运行 指针报错 没有初始化

指针没有初始化,就访问?没有出现短错误应该是你运气好

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐