已采纳回答 / 追逐奔跑
你想表达什么?我不是很明白,但是我估计你可能是下面的问题,所以只以为是的解释一番,请斧正。(gdb) p p$6 = (int *) 0x7fffffffde6c这个时候的输出的p的值表示p这个变量存入的地址,指的是p所代表的地址(gdb) p &p$4 = (int **) 0x7fffffffde78这个时候的输出的值是表示p这个变量在内存中的地址,指的是p本身的地址
2016-05-27
已采纳回答 / 咸鱼干儿
因为在RAM内存中最小的存储单位是8bit也就是1Byte,但是地址总线是32位,所以可以寻址的空间是2^32=4G个最小存储单位,也就是4GB。编号的数字大小不代表内存最小存储单位的大小呀。
2016-03-09
已采纳回答 / qq_朕有一车刁民_0
==为什么不会被覆盖,不过你要想避免被覆盖就把数组分为全局和局部的,两个都是全局的肯定会被后者覆盖,前者全局后者局部的,在局部使用的数组不会被覆盖。
2016-02-15
已采纳回答 / lifeforme
对于这个问题 请教了一些大神 给我的答案是:在你调试的时候,系统运行在保护模式,内存不会溢出。你所看到的地址其实是系统映射出来的,实际上不存在。你以为你在访问某地址 其实并没有真正访问具体的内存地址
2016-02-04
已采纳回答 / 小蜗牛不回头
首先,int *p, *表示p是一个指针变量,int 表示指针p指向整形变量。其次,C语言规定指针变量占四个字节,四个字节里面(如p)存放的是指向的变量的地址值(a的地址值,好比家的门牌号)
2015-12-19
已采纳回答 / DoDream
等号左边的意思是定义一个函数指针pquadrate,将quadrate函数的地址赋给pquadrate,quadrate是一个返回值是int,有一个int参数的函数。推荐你一个不错的网站,百度搜索C++技术网,第一个就是了,里面有一些C语言的教程,那些人写得挺用心,通俗易懂,能学的东西还挺多,这个网站还有很多不错的资源可以下载,例如电子书,IDE等,如果你技术上来了,还可以去做一下里面的练习小项目,感觉收获丰富。
2015-10-26
已采纳回答 / onemoo
编译器不会对数组访问越界进行检查。因为数组和指针是有密切联系的,很多时候编译器无法确定你访问的位置是否在合理的范围内,所以编译器就干脆对此不检查了。 实践中,有经验的程序员经常活用这种数组和指针的关系。当然,你这两行代码确实是错的,对array[3]的访问确实越界了。虽然能编译通过,但运行时可能会发生错误。
2015-10-24