C语言学习随笔

时间:2023-02-04 19:13:14

以下是在MAC环境下学习C语言时候所做的小注意点笔记。


1.C程序链接如何生成指定的文件名。

使用

cc  –c目标文件名 –o 文件名

cc 源程序名 –o 文件名

 

2.文件名命名中间不能有空格,不然终端会识别为两个文件。

 

3.cc –c指令可以同时编译多个文件,只需要中间加上空格即可。

 

4.总结clang指令

编译  cc  –c  xxx.c

链接  cc xxx.o

编译、链接  cc xxx.c

运行当前路径下可执行文件  ./a.out

更改可执行文件的名称 cc  xxx.c -o  xxxxx

 

5.main函数一般写在最后面,因为c程序编译和链接一般按照代码先后顺序进行的,如果必须先对其它函数定义过后再使用才不会报错。

 

6.程序的可读性很重要,注意注释和代码的断行。

 

7.存储空间

整型数据占用4个字节。

字符型数据占用1个字节。

单精度数据占用4个字节。

双精度数据占用8个字节。

 

8.释放存储空间

使用{}构成代码块,来标记只有部分程序段才会使用的变量和数据,以此来及时释放临时占用的存储空间,达到时间上的内存较少占用。

代码块的作用:及时回收不再使用的内存空间。

 

9.取余运算中,结果的符号只与%左边的数的符号有关(相同)。

 

10.sizeof的用法

sizeof(常量/变量/数据类型)

 

11.switch语句中没有break时,默认执行从条件成立后的每一个语句,直到遇到break为止。Switch语句只执行条件成立的语句。

 

12.do while循环使用时while语句后面一定要加上;。

do{

循环语句;

}

while(循环条件);

 

13.for循环的使用

for(语句1;条件;语句2)

{

       循环体;

}

 

循环第一次执行时,只执行语句1(赋值语句)而不执行语句2(自增自减语句)。

 

for循环嵌套使用时,continue/break只对距离最近的一个for循环语句产生作用;

 

14.函数体内部不能定义和形参相同的变量名。

 

15.定义函数时如果没有指定函数的返回值类型则默认为整型;

声明了返回值类型,也可以不返回任何值;

不允许嵌套定义函数;

主函数和自定义函数可以不在同一个文件中编写,但是分别编写时,要把各自的文件编译成功后,用cc指令同时进行链接(多个.o文件中间用空格隔开);

用来编写函数的.c文件要把函数声明集中在一个.h文件中,方便使用这些函数时直接使用include来进行调用声明。

 

16.c语言定义函数不允许函数重名(与java中的多态不同)。

 

17.main函数中return的作用:

1>使函数得到一个返回值。

2>退出函数。(return 0时表示正常退出函数;return*表示异常退出。)

 

18.printf返回值是整型,返回输出字符串的长度;一个汉字占据三个字符。

 

19.c语言中不同进制的表示:

2进制:0b或者0B开头。

8进制:0开头。

10进制:默认。

16进制:0x或者0X开头。

20.内存寻址是由大到小进行的,存取数据是也是由高位到低位依次存储。

21.左移运算:a<<n

表示将a的二进制数全向左移n位,高位舍弃n位,低位用0补齐。

同时它的计算结果表示a*2的n次方。

 

22.数组中使用变量作为数组元素个数的参数时,只能先定义数组,然后对数组单个元素进行初始化,不能定义数组时进行初始化。

 

23.数组当做函数参数传递时,采用的是地址传递,把数组当做一个指针变量来传递。指针变量在64位编译器环境下占用8个字节,使用sizeof函数来计算函数中的数组名(形参)占用字节数时,并不能获得原数组的真实字节数,而是获得指针变量的字节数8。

 

24.strlen函数计算字符串长度时,只计算有效字符长度,字符串的结束标志\0并不计算,并且其计算的是字符数,并不是字数(一个汉字占三个字符位,作长度3计);sizeof函数计算字符串字节数时会把\0计算在内。

 

25.把数组首地址赋值给指针变量后,指针变量可以当做数组来使用。

       intargs[5]={0,1,2,3,4};

       p=args;

       p[2]==args[2];

 

26.字符型指针变量指向的字符串初始化后的内容是不可进行单个字符修改的。

 

27.在自定义的头文件中可以加入预处理命令来防止重复引入头文件后程序重复编译头文件。

#ifndef A

#define A 0

函数声明列表

#endif


28.个人小结

C语言是一门面向对象的高级语言,它关注解决问题的步骤,符合一般的逻辑思维,并不难理解,基础学习难度也并不大,其中指针的概念比较重要,而且也可以说是C语言的精髓之一,需要重点掌握。