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

Linux C语言指针与内存

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

最新回答 / 用老名
断点调试:选定某一行,然后选定调试工具栏最右边那个手掌符号(F9),然后选定它旁边那个带箭头的符号(F5).

最新回答 / 黑雪墨白
...你看错了之前的scanf输出到str,这时候才填充到str3输出八个字符时输出到str3,再往后面就是空的了

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

最赞回答 / 慕后端9788028
p[4]=101代表从初始位置(a的地址就始)以四个字节为一步,向前走4步,到达某个位置,然后对这个位置进行初始化赋值,即把101赋给这个地址所代表的内存空间。p[4],*p=101,p[4]代表从初始位置(a的地址就始)以四个字节为一步,向前走4步,到达某个位置。*p=101,代表此时指针指向的地址(即走了四步后所在位置)并对这个地址所在的内存空间进行初始化,赋值101。p+=3于p=p+3等同,加的是步数,原理跟p[3]一样

最新回答 / jfhdibrbfjd
这没有必要的联系  先学那个都行的

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

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

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

最赞回答 / 热喷Redpen
我把代码稍微改一下: int* a;这里的a就是代表指针变量(int*),而不是一个整型变量(int)所以a存放的是地址,*a才是地址中存放的值(这里的*与第一行的*不同,这个*是取地址的意思)

最赞回答 / 刘小宇0215
先回答第二个问题,注意是16进制,不是十进制,内存可能分配半个字节吗,随着内存越来越廉价,程序设计一般是空间换时间,每个数组是int的四个字节。第一个问题是二维数组赋值给一维数组,应该很好理解,不过我不理解你为什么将那个表达式称为常量表达式,应该是变量表达式吧,而且这个数组[]里应该最大是11,而不是12也不会是12以上,具体细节如果不懂的话,建议你最好在命令行用gdb一步步的慢慢调试,我也是刚刚学,不过你犯的是常识错误。
课程须知
本课程是C语言中级课程,为了更好的学习效果: 1、需要有一定的C语言基础,如果没有基础的同学可以看《C语言入门》这门课。 2、本课程是在Linux环境下讲解,需要熟悉一些Linux命令。如果不了解的话可以在《Linux C语言编程基本原理与实践》这门课程中补充
老师告诉你能学到什么?
1、C语言中的指针是怎么回事 2、Linux下gdb调试工具是怎样使用的 3、指针与内存有着怎样的关系 4、数组与字符串之间的联系

微信扫码,参与3人拼团

微信客服

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

帮助反馈 APP下载

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

公众号

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

友情提示:

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消