linuxC高级总结

经过一周半的学,由C基础上升到了C高级学习过程。C高级学习过程是C基础的过度。学习C语言的高级内容可以帮助我们更深入地理解和应用C语言的各种特性和功能。以下是关于C语言高级学习的一些总结:

  1. 结构体:

结构体主要如何求定义一个结构体:

Struct student{

char name[20];

int age;

}

定义结构体变量:

Student p={0};

结构体访问:

结构体变量名.成员

p.name

结构体指针变量->成员

struct student *ps=NULL;

ps->name;

  1. 动态内存管理:

malloc和free

void *malloc(size_t*size);

Stu *ps=NULL;

ps=(Stu *)malloc(sizeof(Stu)*SIZE);

free(ps);

ps=NULL;

  1. 自定义文件

头文件要加 #ifndef _STU_H   #define _STU_H

       末尾加    #endif

gcc编译流程:

预编译:(处理以#开头的文件) gcc –E stu.c –o stu.i

编译:(生成汇编语言)gcc –S  stu.i –o stu.s

汇编:(将汇编语言转化为机器语言)gcc –c stu.s –o stu.o

链接:(将所有机器语言汇集成一个可执行文件)gcc  stu.o –o stu

  1. 函数指针

a) 一个指向整型数的指针    int *a;

 b) 一个指向指针的的指针,它指向的指针是指向一个整型数   int **a;

 c) 一个有 10 个整型数的数组  int a[10]

d) 一个有 10 个指针的数组,该指针是指向一个整型数的 int *a[10]

 e) 一个指针,该指针指向一个有 10 个整型数的数组   int (*a)[10]

定义一个函数指针,该函数指针指向一个返回值为void,有两个参数,一个为int,一个为char *      void (*p)(int char*);

定义一个函数指针数组,该数组中的每一个元素都是一个函数指针,该函数指针指向一个返回值为int,有两个参数为int的函数    int (*p[4])(int int)

Shell命令、shell脚本、shell

Shell命令:用户向内核发送的控制请求,与之交互的文本流

Shell脚本:一堆命令的集合

Shell:是命令行解释器,将用户命令解析为操作系统所能理解的命令,实现用户和操作系统的交互。

用户在命令行提示符下键入命令文本,开始于shell交互;接着,shell将用户的命令或按键转化成内核所能够理解的指令,操作系统做出响应,直到控制相关硬件设备。最后,shell将结果提交给用户。

接下来对测试进行总结:

a是全局变量,extern修饰的全局变量存放在静态区,int a=5说明a已经是5了,带入main函数中再计算,就可以得到第一次传参时a已经是8.

错题原因:不知道全局变量存放在静态区,要用全局变量带入main函数中进行计算。

当程序启动时,全局变量的内存空间会在程序加载到内存中时分配,并且会在main函数执行之前进行初始化。这意味着,全局变量的值在main函数执行之前就已经被确定了。

&&的优先级比||的高,相当于if(a--||(b++&&--c)),从左向后开始执行,a--,先赋值在自减。为真,阶段法则,后面不用执行。所以b和c没有改变值,a自减了1。

P1和p2是指针,指针不能进行字符串的拼接,所以会出现段错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值