结构体
示例代码
#include<stdio.h>
int main(void){
struct{
charo a;
short b;
int c;
char d;
}s;
s.a=1;
s.b=2;
s.c=3;
s.d=4;
printf("%u\n",sizeof(s));
return 0;
}
编译:gcc test.c -o
反汇编:objdump test
四个成员变量在栈上的排列
80483ed:
c6 44 24 14 01
movb $0x1,0x14(%esp)
80483f2:
66 c7 44 24 16 02 00
movw $0x2,0x16(%esp)
80483f9:
c7 44 24 18 03 00 00
movl $0x3,0x18(%esp)
8048400:
00
8048401:
c6 44 24 1c 04
movb $0x4,0x1c(%esp)
合理安排成员顺序,可以避免产生填充字节:
示例代码:
方式一:
struct{
char a;
char d;
short b;
int c;
}s;
方式二(效率有问题不建议使用)
struct{
char a;
short b;
int c;
char d;
}__attribute__((packed))s;
联合体
示例代码如下:
#include<stdio.h>
typedef union{
struct{
unsigned int one:1;
unsigned int two:3;
unsigned int three:10;
unsigned int four:5;
unsigned int :2;
unsigned int five:8;
unsigned int six:8;
}bitfield;
unsigned char byte[8];
}demo_type;
int main(void){
demo_type u={{1,5,513,17,129,0x81}};
printf("sizeof demo_type=%u\n",sizeof(demo_type));
printf("values: u=%u,%u,%u,%u,%u,%
u\n",u.bitfield.one,u.bitfield.two,u.bitfield.three,u.bitfield.four,u.bitfi
eld.five,u.bitfield.six);
printf("hex dump of u: %x %x %x %x %x %x\n",u.byte[0],u.byte
[1],u.byte[2],u.byte[3],u.byte[4],u.byte[5],u.byte[6],u.byte[7]);
return 0;
}
c内联汇编
示例代码:(将a的值赋值给b )
#include<stdio.h>
int main(){
int a=10,b;
__asm__(
"movl %1, %%eax\n\t"
"movl %%eax, %0\n\t"
/*运算结果输出到b操作数中*/
:"=r"(b)
/*从a中获得输入*/
:"r"(a)
/*汇编指令中被修改过的寄存器列表*/
:"%eax"
);
printf("Result:%d %d\n",a,b);
return 0;
}
分享到:
相关推荐
C语言学习笔记C语言学习笔记C语言学习笔记C语言学习笔记
C语言学习笔记 C语言学习笔记 C语言学习笔记 C语言学习笔记
c语言学习笔记c语言学习笔记c语言学习笔记c语言学习笔记c语言学习笔记c语言学习笔记c语言学习笔记
认真学习的人从国内某个培训机构上课时,记录的C语言学习笔记,其中包含所有的C语言基本语法,文章中对指针、字符操作有好多介绍,整理的很全面,并且有图示哦!! 相信对大家学习C语言会有很大帮助!!!
C语言学习笔记.zip
C语言学习笔记C语言学习笔记
c语言学习笔记
C语言学习笔记.pdf
C语言学习笔记 必看知识点 精品啊 值得看
C语言基础部分学习笔记全部
C语言学习笔记,C语言学习笔记,qsort排序。。。。。。。。。。。。。。。。。。。。。。。。。。。。
自己学习过程中记录的一些信息,可能不全C语言学习笔记变量数组指针C语言学习笔记变量数组指针C语言学习笔记变量数组指针C语言学习笔记变量数组指针C语言学习笔记变量数组指针C语言学习笔记变量数组指针
这是本人学习C语言的一些经验总结和学习笔记,想参考的可以看一下
对想入门和增加C语言的开发技术,都是挺好的文档,希望对各位程序员的能力提高有所帮助。
从头到尾,超级全面。
C语言基础学习笔记,都是自己读C语言的一些理解,如果大家有发现理解错误的地方可以跟我说下,希望能一起学习共同进步
C语言学习笔记.docx
C语言学习笔记.doc
c语言学习笔记.pdf