首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有趣的const ! 没事来看看,该如何处理

2012-04-01 
有趣的const ! 没事来看看声明下本人用的是linux系统的gcc编译器C/C++ code1:int **p, *a, i1const int

有趣的const ! 没事来看看
声明下本人用的是linux系统的gcc编译器

C/C++ code
1:  int **p, *a, i=1;    const int **cp, ci;    a = &i;    p = &a;    *cp = *p;(cp=p和cp=&a都是错误的)    printf("%d\n", i);2: int **p, *a, i=1;    const int **cp;(就这里少了一个ci声明)    a = &i;    p = &a;    *cp = *p;    printf("%d\n", i);

1:输出结果为 1
2:输出结果为 segmentation fault(段错误)

昨天好不容易搞懂 cp = p 为什么不行 今天却遇到更郁闷的
希望哪位知道的教教我!

[解决办法]
因为cp里面存放的是一个随机地址,那么你对*cp肯定有问题了。
[解决办法]
又是一只迷途的羔羊啊……
这个错误不在于ci。
程序能运行的话,只表示你运气好。

*cp=*p 这句犯了大忌。

cp是一个未初始化的指针,可能指向任意地址。解引用一个未初始化的指针是错误的做法的。

给NULL地址赋值肯定是segment fault。
所以你可以实验一下,给两个函数里的cp都初始化成NULL。再运行,看看你还打得出来1不?

热点排行