重温C语言–读C语言深度解刨有感
#C基础的温习
可以这样认为,很多语言都有C语言的影子。同样除了汇编语言,C语言是最靠近底层的语言。
自我认为,程序员编写程序或者设计架构的时候,一定得考虑程序运行的资源占用与释放问题,
毕竟绝大部分程序都是运行在操作系统上的。
定义:如:int i;
指编译器创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说
的变量名或对象名。
声明:如extern int i;
有两重含义:1、告诉编译器,这个名字已经匹配到一块内存上了,下面的代码用到变量或对象是
在别的地方定义的。声明可以出现多次。
2、告诉编译器,我这个名字先预定了,别的地方再也不能用它来作为变量名或对象名。
static修饰符–用来表示不能被其它文件访问的全局变量和函数:
修饰变量:无论是局部还是全局变量,它们都存在内存的静态区,当函数运行完时,静态变量也不会
释放,函数下次使用时,还会用到这个值。
修饰函数:指对函数的作用域仅局限于本文件,又称为内部函数。
对于循环语句的注意点:
在多重循环中,如果有可能,应将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨
切循环层的次数。
循环要尽可能的短,要使代码清晰,一目了然。
- 对于void指针:
不能对void指针进行算法操作,ANSI标准坚持:进行算法操作的指针必须是确定知道其指向数据类型
大小的。也就是必须知道内存目的地址的确切值。 - return关键字:
return用来终止一个函数并返回其后面跟着的值。
return语句不可返回指向“栈内存”的“指针”,因为该内存在函数体结束时被自动销毁。 - const修饰的只读变量:
定义const只读变量,具有不可变性。
编译器通常不为普通const只读变量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译
期间的值,没有了存储与读内存的操作,使得它的效率也很高。 - volatile关键字:
它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或其他线程等。
遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的
稳定访问。 - struct关键字:
将一些相关联的数据打包成一个整体,方便使用。
空的结构体的大小定位为1个byte。 - 存储模式:
大端模式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端模式:字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。 - typedef关键字:
给一个已经存在的数据类型(不是变量)取一个别名,而非定义一个新的数据类型。