为了账号安全,请及时绑定邮箱和手机立即绑定

Linux C语言指针与内存

难度初级
时长 2小时 5分
学习人数
综合评分9.60
263人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.4 逻辑清晰

已采纳回答 / Herman_C
要了解自己申请的空间的大小,避免输入过多超出。添加while限定输入个数。

已采纳回答 / 惟爱你sun
是不是 和别的一起编译了啊

已采纳回答 / 追逐奔跑
你想表达什么?我不是很明白,但是我估计你可能是下面的问题,所以只以为是的解释一番,请斧正。(gdb) p p$6 = (int *) 0x7fffffffde6c这个时候的输出的p的值表示p这个变量存入的地址,指的是p所代表的地址(gdb) p &p$4 = (int **) 0x7fffffffde78这个时候的输出的值是表示p这个变量在内存中的地址,指的是p本身的地址

已采纳回答 / fujia1992
此时a=5还没执行,打印出的a是你之前赋的值,可能之前赋的值超出了数据类型的范围而去的补码

已采纳回答 / 咸鱼干儿
因为在RAM内存中最小的存储单位是8bit也就是1Byte,但是地址总线是32位,所以可以寻址的空间是2^32=4G个最小存储单位,也就是4GB。编号的数字大小不代表内存最小存储单位的大小呀。

已采纳回答 / sanhuan1
因为传入的是地址(引用),所以不需要返回值。地址没有变,是地址里面的值变了。

已采纳回答 / qq_朕有一车刁民_0
==为什么不会被覆盖,不过你要想避免被覆盖就把数组分为全局和局部的,两个都是全局的肯定会被后者覆盖,前者全局后者局部的,在局部使用的数组不会被覆盖。

已采纳回答 / lifeforme
对于这个问题 请教了一些大神    给我的答案是:在你调试的时候,系统运行在保护模式,内存不会溢出。你所看到的地址其实是系统映射出来的,实际上不存在。你以为你在访问某地址 其实并没有真正访问具体的内存地址

已采纳回答 / 小蜗牛不回头
首先,int *p, *表示p是一个指针变量,int 表示指针p指向整形变量。其次,C语言规定指针变量占四个字节,四个字节里面(如p)存放的是指向的变量的地址值(a的地址值,好比家的门牌号)

已采纳回答 / 流浪_老
你换台电脑试试 看地址是不是又 不一样

已采纳回答 / 菜菜mooy
16进制么 0*16^0+15*16^1+1*16^2+15*15^3

已采纳回答 / DoDream
等号左边的意思是定义一个函数指针pquadrate,将quadrate函数的地址赋给pquadrate,quadrate是一个返回值是int,有一个int参数的函数。推荐你一个不错的网站,百度搜索C++技术网,第一个就是了,里面有一些C语言的教程,那些人写得挺用心,通俗易懂,能学的东西还挺多,这个网站还有很多不错的资源可以下载,例如电子书,IDE等,如果你技术上来了,还可以去做一下里面的练习小项目,感觉收获丰富。

已采纳回答 / onemoo
编译器不会对数组访问越界进行检查。因为数组和指针是有密切联系的,很多时候编译器无法确定你访问的位置是否在合理的范围内,所以编译器就干脆对此不检查了。  实践中,有经验的程序员经常活用这种数组和指针的关系。当然,你这两行代码确实是错的,对array[3]的访问确实越界了。虽然能编译通过,但运行时可能会发生错误。

已采纳回答 / 雾青依
这是因为int array[2]还有一个为'\0'的结束数组符,而int array[]={0,1}则没有'\0'这个结束符
课程须知
本课程是C语言中级课程,为了更好的学习效果: 1、需要有一定的C语言基础,如果没有基础的同学可以看《C语言入门》这门课。 2、本课程是在Linux环境下讲解,需要熟悉一些Linux命令。如果不了解的话可以在《Linux C语言编程基本原理与实践》这门课程中补充
老师告诉你能学到什么?
1、C语言中的指针是怎么回事 2、Linux下gdb调试工具是怎样使用的 3、指针与内存有着怎样的关系 4、数组与字符串之间的联系

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消