有趣的const ! 没事来看看,该如何处理
有趣的const ! 没事来看看
声明下本人用的是linux系统的gcc编译器
1:输出结果为 1
2:输出结果为 segmentation fault(段错误)
昨天好不容易搞懂 cp = p 为什么不行 今天却遇到更郁闷的
希望哪位知道的教教我!
------解决方案--------------------
因为cp里面存放的是一个随机地址,那么你对*cp肯定有问题了。
------解决方案--------------------
又是一只迷途的羔羊啊……
这个错误不在于ci。
程序能运行的话,只表示你运气好。
*cp=*p 这句犯了大忌。
cp是一个未初始化的指针,可能指向任意地址。解引用一个未初始化的指针是错误的做法的。
给NULL地址赋值肯定是segment fault。
所以你可以实验一下,给两个函数里的cp都初始化成NULL。再运行,看看你还打得出来1不?
声明下本人用的是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不?