为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
Linux C语言结构体_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

Linux C语言结构体

雷过就跑 移动开发工程师
难度初级
时长 1小时30分
  • a,b转换: a=a^b; b=b^a; a=a^b;
    查看全部
  • 共享一块内存,同一时刻只能存储一个成员
    查看全部
    0 采集 收起 来源:Linux C公用体

    2016-01-14

  • 右移n位,相当于除以2的n次方,左移n位,相当于乘以2的n次方。这种运算比乘除法快很多。
    查看全部
  • 按位异或可实现数值交换。
    查看全部
  • 按位与:快速清零,保留指定位,判断奇偶
    查看全部
  • 声明共用体变量,类似于结构体。union data data_1;里面包括a b c三个元素,该共用体和其三个成员所占内存地址相同。可用如下方式打印出来。 printf("%p\n,%p\n,%p\n",&data_1.a,&data_1.b,&data_1.c);
    查看全部
    1 采集 收起 来源:Linux C公用体

    2018-03-22

  • Union联合体的所有成员共享同一个内存空间,在同一时刻,只能存储一个成员的值。可以节省内存开销。 union的大小计算方法: union的大小为union中所有成员中最大的成员的值 struct的大小计算方法: struct data{ int a; char b; int b; }; 涉及到字节对齐的问题,字节对齐的目的,主要是为了让计算机能够快速读写,是一个以空间换取时间的方法,对于结构体对象的大小,有公式:结构体大小 = 最后一个成员的偏移量 + 最后一个成员的大小 + 末尾的填充字节数 -->最后得到的大小就是所有成员中最宽的基本数据类型的整数倍。 偏移量:某一个成员的实际地址和这个结构体的首地址之间的距离 计算偏移量的一个准则:每一个成员相对于首地址的偏移量都必须是自身类型大小的整数倍 union与struct的区别: 1. union的所有成员共用一个内存空间,struct成员有独立的存储空间; 2. union变量在初始化的时候,初始化列表中只能有一个值,而struct变量的初始化列表中可以有多个值; 3. 所占用的内存长度不一样 4. union成员变量的地址都是一样的。
    查看全部
    1 采集 收起 来源:Linux C公用体

    2018-03-22

  • union data{int a;char b;int c;}; 定义共用体,里面也可以有不同类型的数据。共用体所有元素共用一个内存地址,即同一时间其内存只能存放她的一个元素。他所占内存就是他里面所占字节最长的元素所占的内存。
    查看全部
    0 采集 收起 来源:Linux C公用体

    2016-01-13

  • printf("%lu",sizeof(struct data));打印结构体data所占用的内存长度。 结构体内存长度计算方式:里面每一个变量的偏移度必须是改变量所占字节的整数倍,不足的话要补齐。这样每个变量长度都补齐(如果需要的话),所有变量所占内存长度之和才是这个结构体所占内存长度。比如data 里面元素分别为 int a;cha b;int c。a占4,b占1,c也占4。c的偏移度为5,不是4的整数倍要补足,所以c前面要补充3个字节,即c的偏移度为8,再加上c的4个字节,data的长度就为12.
    查看全部
    0 采集 收起 来源:Linux C公用体

    2018-03-22

  • 定义结构体指针 struct weapon * w; w=&weapon_1;这样进行调用。打印时要用(*w).name,或w->name。 struct weapon weapon_2[2]={{"weapon_name1",50,100},{"weapon_name2",100,200}}; struct weapon * p; p=weapon_2; 此时结构体数组指针指向的是数组中第一个元素的第一个变量的地址,打印p相当于打印了weapon_2[0].name。若p++,则其指向了第二个元素的第一个变量地址,即weapon_2[1].name。
    查看全部
    0 采集 收起 来源:结构体指针

    2018-03-22

  • 结构体里面可以存放各种类型的变量,像一个菜篮子里面可以盛各种蔬菜。调用时可用如weapon_1.name的形式来访问其成员。定义结构体变量要用struct weapon weapon_1={}的形式,其中如果有char类型的成员,需要在其两边加“”。
    查看全部
  • 宏的本质就是字符串,在预处理过程中进行的宏替换只是单纯的字符串替换。比如我们声明了一个宏#define R 10 在main函数中我们使用了这个宏int a = R;那么在预处理过程中,编译器就将这里使用到的R替换成了字符串10,要特别强调的一点是,这替换的过程中,编译器并不知道这里的10是一个数字,它就是一个字符串。 宏是不考虑C语言的语法的。
    查看全部
  • c语言的编译过程分为四步 只让编译器进行预处理,生成预处理文件的命令: gcc -o hello.i hello.c -E 其中的-E是只进行预处理 预处理主要做的事情有哪些? 1.首先将iclude的头文件展开,直接写入.c文件中 2.进行宏替换
    查看全部
  • #include <stdio.h> struct ws //结构体 { int sum; //成员 struct ws *next; //指向下一个结构体 }; int main() { struct ws a,b,c,*head,*p; //定义struct类型的变量、指针 a.sum=1; //赋值 b.sum=2; c.sum=3; head = &a; //头指针 a.next = &b; //指向下一个结构体 b.next = &c; c.next = NULL; //尾指针 p = head; while(p!= NULL) { printf("%d",p->sum); p=p->next; //指向下一个结构体 } return 0; } 执行结果 123
    查看全部
  • typedef 是给数据类型起个别名,使之更容易理解或者编写简捷。通常是把自己定义的数据类型,如结构体名义上转换为其他名字。如typedef struct stu{} stu_t;在其后的调用中,stu_t{}就相当于stu{}。注意这是一个c语言语句,是有作用域的。而宏不是语句,是预处理,作用域为全部。
    查看全部

举报

0/150
提交
取消
课程须知
本课程为C语言的中级课程 1、需要有一定的C语言基础,如有基础薄弱的童鞋可以看一下网站上其他3门C语言的课程 2、因在Linux环境下,需会一些Linux下的命令,可以看一下《Linux C语言编程原理与实践》此课。
老师告诉你能学到什么?
1、预处理是干什么的 2、结构体是什么 3、公用体是什么 4、位运算是怎么回事 5、如何实现动态数据结构体 6、递归的原理
友情提示:

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