课程
/后端开发
/C
/Linux C语言指针与内存
这就是代码
2016-03-26
源自:Linux C语言指针与内存 5-2
正在回答
我按楼主程序运行,在Linux下同样出现相同的情况,执行到循环时,gdb也不能打出值来。换了c-free ,第三个输出就出现莫名的值,我认为这是编译器的问题。
*p = 2
*p = 1
*p = 5
*p = 1417759240
*p = 32767
*p = 10
*p = 100
*p = 0
-----------------
p[0]=2
p[1]=1
p[2]=5
p[3]=1417759228
p[4]=32767
p[5]=1
p[6]=10
p[7]=100
p[8]=0
删掉p[3]=101这条语句后的运行结果如上,由结果可知,p[3]、p[4]都指向了系统分配的存储其他数据的内存空间,是不可操作的,p[5]指向了array[0],可以改变其中的值。所以会出现崩溃的现象。至于系统为什么这么分,我猜测是编译优化的结果,如果还有别的解释,欢迎交流。
举报
指针-C语言的核心,代领大家对c语言有更加深刻的理解
3 回答我想了解的是为什么指针指向常量的地址,输出值时,地址是常量的地址,结果却不一样,我知道常量不能修改,但是为什么会有这种情况?
3 回答不是很分得清什么样的情况存储在代码段内存,什么样的在栈内存?请大神讲解。
1 回答求问,为什么调试时print出来的值是这个啊???
1 回答为啥地址中是a i b这种格式啊。
1 回答为什么会输出数组的值啊