首页 > 代码库 > C语言结构体里的成员数组和指针
C语言结构体里的成员数组和指针
本文通过阅读陈皓的文章总结 http://coolshell.cn/articles/11377.html
1、所谓变量只是内存中抽象的一个名字,在静态编译时都会转换成相应的内存地址,我们的变量都会在编译的时候被编译器放入内存区中
2、当访问结构体成员变量的时候,是通过偏移量来寻找的
不管结构体的实例是什么,访问成员变量都是加成员的偏移量
3、指针和数组
数组:访问成员数组名得到的是数组的相对地址
指针:访问成员指针得到的是相对地址的内容
对于char s[0]来说,汇编代码用了lea指令,lea 0x04(%rax), %rdx
对于char*s来说,汇编代码用了mov指令,mov 0x04(%rax), %rdx
lea全称load effective address,是把地址放进去,而mov则是把地址里的内容放进去。
数组的原地就是内容,而指针的那里保存的是内容的地址。
4、零长度数组(柔性数组)
0长度的数组在ISO C和C++的规格说明书中是不允许的。
可以给结构体分配一段连续的空间(1、方便释放 2、减少内存碎片)
《完》
本文出自 “零蛋蛋” 博客,谢绝转载!
C语言结构体里的成员数组和指针
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。