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

Linux C语言指针与内存

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

已采纳回答 / onemoo
是的,指针可以指向任何地址,所以也可以指向指针的地址,这种指针就被称作“二级指针”了。

已采纳回答 / onemoo
函数本身代码的地址并不在栈中,它们在代码段中。函数调用时才会将参数和各种用到的变量以栈帧结构存在栈中,这会使栈依照调用顺序来增长。所以参数的压栈地址可以说明它们的调用顺序。

已采纳回答 / onemoo
str2="world" 这样并不是把world这几个字符复制到str2所指的区域,字符串字面量做右值时会转换为指向首字符的指针,所以这语句是把str2指向“world”这个字符串所在的位置。需要复制字符串应使用LS说的strcpy函数。一般程序会把字符串字面量放到只读数据段中(无法被修改),所以后续通过str2来修改这些内容会引起"段错误"。你代码的另一个问题是,在你给str2第二次赋值后就丢掉了前一次分配的指针,导致无法回收那段内存,引起内存泄漏。

已采纳回答 / onemoo
str 比 str2 高 0x40-0x38 = 8字节,str占用6个字节,可以容纳开。str3 比 str 高 0x50-0x40 = 16字节,str3占用10个字节,也可以容乃开。一般变量的地址起始要求是2或4的倍数,所以为了对齐,变量之间会有额外的空当。

已采纳回答 / onemoo
这是函数指针声明。这是将pquadrate声明为函数指针,它指向的是有一个int型参数,返回值为int的函数。这语句同时将pquadrate初始化为quadrate的地址(显然quadrate应该是个函数名)。一步一步讲这个声明:这语句声明的是pquadrate变量,前面有个*,而且是用小括号和变量名括起来的(*pquadrate),表明这个变量名优先和*结合。声明变量时前面有*就代表这个变量是指针,所以pquadrate是个指针。那它指向什么呢?接着看,后面有小括号,前面有类型,表明是个函数。参数就是i...

已采纳回答 / noming
栈在程序的运行中有着举足轻重的作用。最重要的是栈保存了一个函数调用时所需要的维护信息,这常常称之为堆栈帧或者活动记录。堆栈帧一般包含如下几方面的信息:1.函数的返回地址和参数2. 临时变量:包括函数的非静态局部变量以及编译器自动生成的其他临时变量。首先你要知道,由于外部环境变化,某些函数每一次执行都会返回不同的结果。最典型的就是取随机数函数了而栈里面存着的就是这些东西。所以,每一个线程都会得到不同的结果,每一个线程也都需要一个存着这个结果的栈!
首页上一页12345下一页尾页
课程须知
本课程是C语言中级课程,为了更好的学习效果: 1、需要有一定的C语言基础,如果没有基础的同学可以看《C语言入门》这门课。 2、本课程是在Linux环境下讲解,需要熟悉一些Linux命令。如果不了解的话可以在《Linux C语言编程基本原理与实践》这门课程中补充
老师告诉你能学到什么?
1、C语言中的指针是怎么回事 2、Linux下gdb调试工具是怎样使用的 3、指针与内存有着怎样的关系 4、数组与字符串之间的联系

微信扫码,参与3人拼团

微信客服

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

帮助反馈 APP下载

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

公众号

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

友情提示:

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消