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

Linux C语言结构体

雷过就跑 移动开发工程师
难度初级
时长 1小时30分
  • 1.宏函数较普通函数的优势: 不需要考虑,函数返回值类型、参数类型等C的语法,而直接将其做字符串处理,避免了许多错误。 2.预处理阶段还具有条件编译功能,根据不同的条件执行不同的程序部分,形成不同的目标代码文件,具有良好的可移植性,方便调试。
    查看全部
  • 预处理,编译,汇编,链接
    查看全部
  • .c(预处理).i文件(编译).s文件(汇编).o文件可执行文件
    查看全部
  • 宏定义是发生通常在预处理阶段的单纯的字符串的替换,不考虑C的语法,用于大量使用的常量、数组buffer中,便于修改。
    查看全部
  • 总结 编译预处理:头文件、宏定义处理 自定义数据类型:结构体、共同体、链表声明定义等,结构体涉及字节对齐,共同体所有成员公用结构体内存地址 位运算 递归和递推
    查看全部
    0 采集 收起 来源:总结

    2017-03-08

  • 1.递归:将一个问题规模为n的问题降为规模为(n-1)的问题,然后依次降低规模(层层往下),直至问题得到低规模的解,之后依次带入高规模的问题中(层层往上),最终得到规模为n解。 从n -> 1 -> n; 2.递推:先构造解决一个低的规模问题,然后依次(层层往上)推导出高规模的问题解。 从1 -> n; 递归实际编译中会为逐层递归函数分别分配内存,有保存现场、释放内存的过程,实际上比较消耗cpu计算能力
    查看全部
  • int类型只占四个字节,表达的值有上限 所以计算阶乘时n不能太大
    查看全部
  • 让二进制左移N位,高位丢弃,低位补0,得到的 新值 = 原值*2^N, 实现二倍乘除运算(右移几位相当于除于二的几次方。左移几位,相当于乘上二的几次方。) 问题:int是有符号类型,左移可能会把符号左移出去,发生溢出。 右移>>就是除以2的过程 根据符号位进行补零补一(符号为零补零)
    查看全部
  • 按位异或^ 定位反转(a=a^0xff;//a中的1变成0,0变成1) 交换数值 int a=9;int b=5; a=a^b;b=b^a;a=a^b; 结果 a=5;b=9
    查看全部
  • 按位或用途:设定数据的指定位 b = b| 0xFF,能设定数据b的指定二进制数后8位置为1 即b的十进制等于255
    查看全部
  • 与运算& 迅速清零(与0进行&运算) 保留指定位(与1进行&运算) 判断奇偶(int d=a&1;//如果结果是1,则a为奇数,否则a为偶数)
    查看全部
  • 6中位运算符 参与位运算的元素必须是int型或者char型,以补码形式出现。
    查看全部
  • 【动态数据结构--动态链表】 动态链表: 程序执行过程中从无到有的建立起一个链表,也就是说需要一个一个的开辟新节点,输入新节点的数据,然后建立起前后相连的关系。 建立武器信息的单向动态链表: #include <stdio.h> #include <malloc.h> struct weapon{ int price; int atk; struct weapon * next; }; //【需要一个创建链表的函数,返回值是链表的头指针】 struct weapon * create(){ struct weapon *head; struct weapon *p1,*p2;//3个指针都用来指向struct weapon类型数据 int n;//记录当前节点个数 //malloc分配内存块的函数,sizeof判断数据类型长度符 p1=p2=(struct weapon*)malloc(sizeof(struct weapon)); scanf("%d,%d",&p1->price,&p1->atk); head = NULL;//一开始链表不存在,置空 while(p1->price!=0){//约定price为0时停止输入 n++; if(n==1) head=p1; else p2->next=p1; p2=p1;//保留p1当前所指向的的地址 //需要开辟一个新的动态存储区,把这个的地址载给p1 p1=(struct weapon*)malloc(sizeof(struct weapon)); scanf("%d,%d",&p1->price,&p1->atk);//开辟后输入数据 } p2->next=NULL; retunr (head); }//p1,p2一个用来指向链表新创立的节点,一个用来指向下一个节点 int main() { struct weapon *p; p=creat();//p成为链表的头指针 printf=("%d,%d",p->price,p->atk);//打印第一个节点的信息 return 0; }
    查看全部
  • 【动态数据结构--静态链表】 静态数据结构: 1、如:整型、浮点型、数组。。。 2、系统分配固定大小的存储空间 链表: 1、有头指针,存放地址,地址指向第一个元素。没有头指针链表无法访问 2、链表中的每一个元素都是一个节点。节点里包括用户需要的数据和下一个节点的地址,各个元素的地址不一定是连续的 静态链表;(所有节点都是在程序中定义的,而不是临时开辟的) 【由三个武器信息的节点组成,所以用结构体类型作为节点元素】 struct weapon{ int price; int atk; struct weapon * next; }; int main() { //定义三个武器的结构体变量作为链表的节点 struct weapon a,b,c,*head; a.price=100; a.atk=100; b.price=200; b.atk=200; c.price=300; c.atk=300; //连成一个静态链表 head=&a; a.next=&b; b.next=&c; c.next=NULL; //打印,构建指针p访问链表 struct weapon *p; p=head; while(p!=NULL) { printf("%d,%d\n",p->price,p->atk); p=p->next; } return 0; }
    查看全部
  • 结构体————内存大小 结构体所在内存大小设计字节对齐的问题,以空间换取时间,其目的是加快计算机执行速度。第一个成员变量的地址为该结构体的首地址,每一个成员变量地址距离首地址的内存长度叫偏移量,字节对齐,要求每一个结构体成员的偏移量是自身所占字节长度的整数倍,若不是整数倍则编译器会进行字节填充,使之“对齐”。在所有成员判断完成后,这还没完,还要判断目前该结构体的长度是否是最宽基础成员变量的整数倍,若否,则最后一个成员变量后面还要进行字节填充,若是整数倍则可得出该结构体所在内存单元的长度。【最后成员的偏移量+最后成员占得字节数+字节填充】 共用体————共享内存单元,一次只存一个成员变量(可是不同类型)。 关键字:union 共用体名{int a; char b; int c;}; 内存长度:等于成员变量中最长的一个的长度。
    查看全部
    1 采集 收起 来源:Linux C公用体

    2017-03-05

举报

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

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