chenduxiuyi
chenduxiuyi
采纳率0%
2017-07-30 01:05 阅读 788

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");
}
就能正常运行?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • hdw5567 hdw5567 2017-07-30 01:23

    int **p;
    *p=NULL;

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

    点赞 评论 复制链接分享
  • lixiaogang_theanswer 君子黎 2017-07-30 02:47
    1.代码1、代码2都不会正常运行,首先声明的是,这里与int ch没有任何关系;
    2.你用的什么编译器,第2个代码能够正常运行?好吧,如果能够运行,那只能是说明你的运气好,但是多数情况下,这段代码是会出现段错误的;
    因为你这里的指针p是一个野指针,至于指向哪一个地址空间,程序员是无从得知的;只有编译器知道,若碰巧好该指针执行一个没有任何变量使用的
    空闲的地址,让其为NULL不会有问题,但是若其指针刚好指向一系统在使用的地址空间,让其为NULL会出现段错误;
    
    
    点赞 评论 复制链接分享
  • qq_34402394 小-鸟 2017-07-30 04:54

    你的头文件没有写完整 include

    点赞 评论 复制链接分享
  • qq_38204686 das白 2017-07-30 08:46

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

    点赞 评论 复制链接分享
  • baoqingti 底层软件架构 2017-07-31 04:28

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

    点赞 评论 复制链接分享

相关推荐