现在的位置: 首页 > 综合 > 正文

C语言学习心得

2017年10月14日 ⁄ 综合 ⁄ 共 913字 ⁄ 字号 评论关闭

1、Const作为修饰符的作用(只读)

作用在变量表明变量不能被修改。作用在形参表明该参数是输入参数。

作用在函数,表明函数的返回值不能被修改。在C++中还可以表明该方法不能修改成员变量。

2、static用法

主要是控制生命周期和访问范围。

static变量的生命周期和整个程序运行的生命周期是一样的,所以函数调用后对于局部静态变量(栈内存),也没有被销毁继续保持。

static方法表明该函数只能被本源文件其他函数访问,可以解决和其他源文件同名的问题。

3、对于内存的管理

每次分配完内存后,要对分配后的内存首地址做判断,是否分配成功!

定义指针变量的时候记得初始化,防止指向未知地址放生错误!

堆内存使用完毕释放后,防止野指针的出现!要把指针拴住!赋值为NULL。

4、一维数组做函数参数的时候会被解析成指针。数组和指针是两个不同的东西。数组在定义分配的是一块连续的地址空间,并取一个名字即数组名。而指针是一个4字节的里面存放指向内存某块地址的地址(32位系统)。

5、数组中的区别

定义一个数组int a={1,2,3,4,5,6};

则a代表数组首元素的首地址。&a代表数组的地址。sizeof(a)=4,sizeof(&a)=24.

6、函数调用使用的形参都是拷贝,真正的数据被没有被使用或修改,必须通过返回值来实现。函数调用完毕除了该函数的静态局部变量外,其余的在栈内存分配的内存全部被释放掉。(指针释放出现问题,可以定义一个指针来返回)。

7、宏,在C中类似一个inline的效果,直接替换。定义宏的时候整个表达式要加括号,每个元素也要加括号。

8、数组与指针在形参中解析的转换:

int a[]----------->*(a+i)

int a[][]---------->*(*(a+i)+j)或*(a[i]+j)

9、结构体的内存对齐问题

10、volatilte 修饰的变量必须每次从内存里重新取值。

11、寄存器变量不能用&取值。

12、sizeof是关键字,求分配的内存大小的。对于类型sizeof(int),不是类型的直接 sizeof +xxx即可。空结构体的sizeof大小是一个字节。空类也是1.在32位的系统中指针是4个字节。64位系统是8个字节。



抱歉!评论已关闭.