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

Linux C语言指针与内存

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

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

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

最赞回答 / 刘小宇0215
先回答第二个问题,注意是16进制,不是十进制,内存可能分配半个字节吗,随着内存越来越廉价,程序设计一般是空间换时间,每个数组是int的四个字节。第一个问题是二维数组赋值给一维数组,应该很好理解,不过我不理解你为什么将那个表达式称为常量表达式,应该是变量表达式吧,而且这个数组[]里应该最大是11,而不是12也不会是12以上,具体细节如果不懂的话,建议你最好在命令行用gdb一步步的慢慢调试,我也是刚刚学,不过你犯的是常识错误。

最新回答 / 奔跑的蜗牛Kevin
1、CPU的寻址能力以字节(byte)为单位 ,如32位的CPU可以寻址2的32次方的地址也就是4GB;2、32位、64位操作系统中的“位”并非计算机中的bit!!!

最新回答 / Perona
what

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

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

最新回答 / 劷鹿
s(step)执行一行源代码并且进入函数内部;f(frame)切换调用的上下文,进入相应的栈里,使用该命令可以打印栈层编号,当前的函数名,函数参数值,函数所在的文件及行号,函数执行到的语句等等;。。。。

最新回答 / 洪一帆
不同编译器优化会不同,不必强求跟老师一样,你的str2就没放在代码段,这是编译器优化不同

最新回答 / KanoWill
C编译器对于输出下标超出长度不会报错,但是运行时会发生不可预料的问题

最新回答 / 实时编程
1,0x 表示16进制   我们平时说的数字就是10进制   方便区分 2,堆内存 一般情况下是 自己申请的 一般用malloc 申请的内存 是堆内存一般我们的变量  会放在  栈内存    栈帧  也是在栈内存 的  一般情况 下  堆内存 需要 主动调用  3, 寄存器  属于硬件  已经不是内存了CPU 可以直接 从寄存器 取数据  这样 比从内存取快非常多不过寄存器 内存 还有缓存  之间 关系 都是 由操作系统 处理的我们在编程过程一般理解为 从内存取数据而已 这个 一般 会在 操作系统 和组成...

已采纳回答 / 菜菜mooy
16进制么 0*16^0+15*16^1+1*16^2+15*15^3
课程须知
本课程是C语言中级课程,为了更好的学习效果: 1、需要有一定的C语言基础,如果没有基础的同学可以看《C语言入门》这门课。 2、本课程是在Linux环境下讲解,需要熟悉一些Linux命令。如果不了解的话可以在《Linux C语言编程基本原理与实践》这门课程中补充
老师告诉你能学到什么?
1、C语言中的指针是怎么回事 2、Linux下gdb调试工具是怎样使用的 3、指针与内存有着怎样的关系 4、数组与字符串之间的联系

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消