犯的错误
for循环
括号里是分号
1 | for(int i; i<100; i++) |
一次定义多个变量
变量间用逗号
1 | int a, b, c; |
scanf赋值
赋值得用&
1 | int a; |
#define MONTHS 12
标识符常量必须大写
gets(arr1) !=NULL
gets()试图超过文件结尾读取字符,这个表达式的值为NULL
使用scanf对字符数组赋值时,不用&
1 | char arr[10]; |
指针和结构体变量
main函数参数
当有参数是,第一个参数是整数,第二个是字符串数组指针
函数
函数返回值
1 | // 函数不能直接返回一个数组,但可以返回一个数组指针 |
数组
赋值(scanf)
1 | // scanf("%s",arr) |
计算长度
1 | int len=sizeof(arr)/sizeof(arr[0]) //一维 |
解决函数不能返回数组的问题
malloc
1 | 通过堆区动态开辟内存解决:C语言中,我们通常用malloc来在堆区动态开辟内存,利用堆区“现用现开辟,用完手动收回”特点,实现灵活管理 |
1 | // 法一 使用malloc动态开辟堆区,但不要忘记使用free,避免内存泄漏 |
指针
1 | 由调用方传入数组指针:此种方法不需要函数返回地址,而是在调用时直接 传入数组地址,委托被调用方进行操作,由于此局部变量属于调用方本身,故即便被调用方结束内存释放,也不会被影响到该数组。 |
1 | char *fun(char *p){ |
全局变量
1 | 这种方法最方便,但此方法打破了函数间的通信及封装的思想 |
常量区
堆与栈
1 | 1.malloc动态请求的区域属于堆区,需要手动free |
1 | 2.数组属于栈区,系统自动回收 |
1 | char *fun(){ |
