0707的LinuxC的总结

了解一下C语言的语法标准

1969年之前所有的操作系统都是用汇编语言编写;
肯.汤普逊 1969年 在BCPL语言的基础之后 编写了B语言 用B语言写了UNIX操作系统的内核代码;
丹尼斯.里奇 1972发明C语言 在B语言的基础之上开发了C语言,用C语言重写了UNIX内核代码。
标准:
一、1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R C”,
1.结构(struct)类型
2.长整数(long int)类型
3.无符号整数(unsigned int)类型
4.把运算符=+和=-改为+=和-=
二、1989年,制定了第一C语言标准 C89
1.增加了真正的标准库
2.新的预处理命令与特性
3.函数原型允许在函数申明中指定参数类型
4.一些新的关键字,包括 const、volatile 与 signed 宽字符、宽字符串与字节多字符
5.对约定规则、声明和类型检查的许多小改动与澄清
三、1999年**,C99**
1.支持不定长的数组,即数组长度可以在运行时决定。
2.变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。
3.初始化结构的时候允许对特定的元素赋值。
4.允许编译器化简非常数的表达式。
5.取消了函数返回类型默认为 int 的规定。
四、2011年,C1X C11

  1. 对齐处理
    alignof(T)返回T的对齐方式,aligned_alloc()以指定字节和对齐方式分配内存,头文件<stdalign.h>定义了这些内容。
    2 .Noreturn
    Noreturn是个函数修饰符,位置在函数返回类型的前面,声明函数无返回值,有点类似于gcc的
    attribute__((noreturn)),后者在声明语句尾部。
  2. _Generic
    _Generic支持轻量级范型编程,可以把一组具有不同类型而却有相同功能的函数抽象为一个接口。
    4._Static_assert()
    _Static_assert(),静态断言,在编译时刻进行,断言表达式必须是在编译时期可以计算的表达式,而普通的assert()在运行时刻断言。
    5.安全版本的几个函数
    gets_s()取代了gets(),原因是后者这个I/O函数的实际缓冲区大小不确定,以至于发生常见的缓冲区溢出攻击,类似的函数还有其它的。
  3. fopen()新模式
    fopen()增加了新的创建、打开模式“x”,在文件锁中比较常用。
  4. 匿名结构体、联合体。
  5. 多线程
    头文件<threads.h>定义了创建和管理线程的函数,新的存储类修饰符_Thread_local限定了变量不能在多线程之间共享。
  6. _Atomic类型修饰符和头文件<stdatomic.h>。
    10.改进的Unicode支持和头文件<uchar.h>。
    11.quick_exit()
    又一种终止程序的方式,当exit()失败时用以终止程序。
    12.复数宏,浮点数宏。
    13.time.h新增timespec结构体,时间单位为纳秒,原来的timeval结构体时间单位为毫秒。

今天的大头戏——数据类型

今天掌握了一个判断复杂数据类型的法则:右左法则。我们进行了大量的训练,让我们可以充分掌握这个法则。我先把老师给的例题及解答手动码上。
给定变量a,填出下列代码。
1.一个指向整型数指针
int *a
2.一个指向指针的指针,他指向的是一个整型数
int **a
3.一个有10个整数的数组
int a[10]
4.一个有10个指针的数组,该指针指向一个整数
int *a[10]
5.一个指向有10个整型数组的指针
int (*a)[10]
6.一个指向函数的指针,该函数有一个整型参数 ,并返回一个整型数
int (*a)(int)
7.一个有10个指针的数组,指向的函数有一个整型参数 ,并返回一个整型数
int (*a[10])(int)
太难的题目就不出来,这几个例题熟练了,啥题目都能做出来,记住,先找变量是什么(遇到特别复杂的,先叫出数据类型的三个组合,例如指针函数数组,函数数组指针啦之类),一旦知道他是什么之后在往第一个数据类型上推,如指针函数数组,我们就要解决他指向的是什么了;再如函数数组指针,我们就要解决这个函数的形参是谁,返回值为谁,再后推。

之后我们着重解决了i++和++i的问题,以前C语言的底子还在一丢,但还是很粗心,因为我总会是数错自加一共有多少个!今天上的东西比昨天好理解多了,我还是喜欢单纯讲代码。昨晚安装一晚上CMake 还没成功,一直报错。我得再试试!

————————————————
引用:
https://blog.csdn.net/ieearth/article/details/45937629

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值