指针指向常量的场合,不能试图通过修改指针指向的内容来修改常量
2009-06-29 22:40
288 查看
程序如下
GCC编译通过,运行时,输入3个字符串后,提示出现
“Error While dumping state(probably corrupted stack )”
即“在转存时发生异常”:在将输入的每个字符串各自的地址赋给每个对应的指针时,发生异常。
使用GDB调试,得到如下结果:
很明显,错误的使用指针来修改指针指向的常量的内容是存在风险的。
int main() { char *apch[3] = {"a a", "s s", "d d"}; int i = 0; //input 3 string printf("please input 3 string: "); for( i = 0; 3 > i; i++ ) { scanf("%s", apch[i]); } //show for( i = 0; 3 > i; i++ ) { printf("%s/n", apch[i]); } printf("/n"); return 0; }
GCC编译通过,运行时,输入3个字符串后,提示出现
“Error While dumping state(probably corrupted stack )”
即“在转存时发生异常”:在将输入的每个字符串各自的地址赋给每个对应的指针时,发生异常。
使用GDB调试,得到如下结果:
很明显,错误的使用指针来修改指针指向的常量的内容是存在风险的。
相关文章推荐
- 指针为何不能修改其指向的常量字符串
- 指针就算指向了常量也不能修改这个常量
- 绝对不能通过指针修改常量!!!!!!
- const修饰的常量 不能被直接修改 但是可以通过指针进行间接修改
- 关于字符串指针指向内容不能修改的问题
- C 语言中指针初始化为字符串常量 不可通过该指针修改其内容
- char* 指向内容不能修改
- set不能通过指针元素指向的成员进行排序
- char * const p; //常量指针,p的值不可以修改  char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p
- sizeof()为什么不能得到指针指向内容的大小
- final Map可以修改内容,final 常量不能修改
- 指向字符串的指针为何不能用来修改此字符串
- 不能修改常量字符串的内容
- 指向字符串的指针为何不能用来修改此字符串(c语言)http://blog.sina.com.cn/s/blog_68ff96b70101him1.html
- 面试题函数返回值 return 后的内容不能指向“栈内存”的“指针”和“引用”
- char* 指向内容不能修改的问题(整理)
- 指针到底能不能修改其指向的常量字符串?
- char* 指向内容不能修改的问题(整理)
- 不能通过改变形参指针的值(形参所指向的地址)来改变实参指针的地址,实现改变实参指针所指向地址变量的值。
- 定义字符指针数组分别指向5个字符串常量,从小到大输出字符串内容