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

Linux C语言指针与内存

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

最赞回答 / Xiaoyan123
32位编译器:      char :1个字节       char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)       short int : 2个字节       int:  4个字节       unsigned int : 4个字节       float:  4个字节       double:   8个字节       long:   4个字节       long long:  8个字节       unsigned lo...
这就是为什么才操作字符串时一定要记得最后给新建或者修改后的字符串末尾加上\0的原因!!!
只能说运气好,是这样排布的:a-i-b-array
那么多节课过去了,老师还没发现自己的数组写错了。。。
最大2^32-1
我的顺序是i-b-a-array[0]-array[1]-array[2]
我电脑里试出来的结果就完全不是连续的
看&pa和&pb就知道系统是64位
p;指针指向的变量地址
*p;指针指向的变量值
&p;指针自己所在的地址
既然一个指针保存的是变量的地址,对32位CPU,地址有4个字节,就需要4个内存单元来存储,所以每次++p在内存里都是跳4格。
突然从计算机组成课跳到了操作系统课哈哈哈哈
楼下的是想说逻辑地址和物理地址的区别么。。
C是靠传入变量地址的方法来实现对变量的全局操作:void f(int *a); 使用:f(&a);
C++有个引用型就方便多了:
传入普通变量:
void f(int &a) {++a;};
f(a); // a自增1

传入指针:
void f(int *&p) {++p;};
f(p); // 此时,指针p的值自增1
我也是这样,这个视频好卡,加载错误
字符串的指针,字符数组的指针,其实都是指向字符的首地址,这点很重要。
课程须知
本课程是C语言中级课程,为了更好的学习效果: 1、需要有一定的C语言基础,如果没有基础的同学可以看《C语言入门》这门课。 2、本课程是在Linux环境下讲解,需要熟悉一些Linux命令。如果不了解的话可以在《Linux C语言编程基本原理与实践》这门课程中补充
老师告诉你能学到什么?
1、C语言中的指针是怎么回事 2、Linux下gdb调试工具是怎样使用的 3、指针与内存有着怎样的关系 4、数组与字符串之间的联系

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消