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

Linux C语言指针与内存

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

最赞回答 / 小雾3378873
"32位计算机是有2的32次方种状态" 引用提问者的话,答:32位计算机能给系统分配2的32次方个内存地址,注意这里说的是“内存地址”,也就是每个内存的门牌号码。换句话说,32位操作系统给内存编号只能编到32个二进制位,能组合成2的32次方个状态或地址。因为内存是按字节寻址的,即每个地址对应一个字节,这是规定好的,或者说是硬件限制的你的问题是把内存地址与内存空间搞混了,内存地址是门牌号码,内存空间相当于一个小房子,一个小房子对应一个门牌号码(地址),一个小房子占用一个字节的内存空间,那32位操作系统能分配...

最赞回答 / 眼睛愛笑
因为你的程序里没有定义数组里第四第五个的变量的值。那么当程序运行到第四第五个的时候 ,程序要读取数组中第四第五个数所在的内存位置,然而你的代码中没有给他们赋值,那么那两个内存位置储存的数是别的程序运行后残留的数据,是程序员不可控的。

最新回答 / qq_极度嚣张_04306957
//赋值一个,多个赋值则用for循环int i = 3;int *p = &i;int str[10] = {0};str[0] = *p;

最新回答 / no4990
我试也是递减的,a的地址位更高。<...code...>

最赞回答 / 不看6324不混吃等死
函数的调用时是从高到低分配,形参变量从高到低分配,局部变量是从低到高分配       我也是看别人解释的

最赞回答 / SmileLML
<...code...>int a = 3;int *p = &a;// p的值是a地址 *p 的值为3

最新回答 / 不看6324不混吃等死
<...图片...>箭头指向就是栈顶 也就是低地址

最新回答 / nilaoda
栈由高到低 堆由低到高

最赞回答 / wangxiaopo4288577
我就用俗话说吧,不科学,但容易懂。为什么是1024,而不是1000?其实数字1024,用二进制表示的结果为:10000000000不信你用带二进制的计算器转换一下就知道了。2的10次方也是1024所以U盘的容量,是1M,2M,8M,16,32,64,128,256,512,1024(1G),2G,4G.....的倍数关系,也相当于是2的倍数。还有就是Byte和bit,俗称大B和小b的区别(谁大谁小看名字就知道了吧)一个小b只能代表一个内容,(0或者1,其中的一个)两个小b可代表4个内容"2的2次方“(00...

最新回答 / Only_L
我用的也是CentOS,有一些命令可能不一样,你百度查查看就可以了。

最新回答 / 慕勒7123956
我也觉得很奇怪,难道是linux下面不会内存溢出吗

最新回答 / anderson_yao
那就不是交换了,可以用另外一块内存区域覆盖改变值

最新回答 / qq_L_36
我的理解不知道对否,有问题还望提出以便改正。str(指针常量)的内容是一个固定的地址,而str是这个地址的名字,它被存放在&str下,也就是栈里。即栈里存放的是str,str里存放的是指针常量。hello是否是常量取决于它赋给谁,赋给字符指针变量时因为没有分配空间所以就会放在常量区当作常量,赋给数组时分配了空间,这个空间是系统在栈里分配的。
课程须知
本课程是C语言中级课程,为了更好的学习效果: 1、需要有一定的C语言基础,如果没有基础的同学可以看《C语言入门》这门课。 2、本课程是在Linux环境下讲解,需要熟悉一些Linux命令。如果不了解的话可以在《Linux C语言编程基本原理与实践》这门课程中补充
老师告诉你能学到什么?
1、C语言中的指针是怎么回事 2、Linux下gdb调试工具是怎样使用的 3、指针与内存有着怎样的关系 4、数组与字符串之间的联系

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消