首页 > 代码库 > C语言学习心得
C语言学习心得
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、寄存器变量不能用&取值。
C语言学习心得