数组名作为函数形参时,变为普通指针,与指针的操作是一样的可以自增自减等操作
数组名可以是指代当前数组这种数据结构:
int arr[10];printf(sizeof(arr), %d);// 40
(指代当前这个数组)(作为一个指针常量不能自增自减)
宏实现类似函数功能:
#define MIN(a, b) ( (a) < (b) ? (a) : (b) )
宏定义后面是不跟分号的
头文件:
防止头文件重复包含
extern关键字与"c"一起连用时,如: extern " c" void fun(int a int b) 则告诉编译器在编译fun这个函数名时按着c的规则去翻译相应的函数名而不是c++的, c++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun abc_int_int#$也可能是别的,不同的编译器采用的方法不一样,因为c++支持函数的重载
当extern不与" c" 在一起修饰变量或函数时,如在头文件中: extern int g_int 它的作用就是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块和其他模块中使用,记住它是一个声明不是定义,也就是说模块b(编译单元)要是引用模块a(编译单元)中定义的全局变量或函数时,它只要包含模块a的头文件即可。在编译阶段,模块b虽然找不到该函数或变量,但它不会报错,它会在连接时从模块a生成的目标代码中找到此函数。
strlen统计字符串长度
strlen(char* ptr);
数组越界问题
char* str[10];
strcpy(char str, const char str2)实现
strcpy(char str, const char str2)实现
操作符优先级
函数参数(传值/传指针/传引用)
函数返回值
野指针不能去操作
数组:
宏实现类似函数功能:
#define MIN(a, b) ( (a) < (b) ? (a) : (b) )
头文件:
const与static作用:
const:
C语言运算中规定,如果整型变量间进行数据运算,只要有一个变量是无符号的,结果按无符号数据输出
全局变量,静态全局变量,静态局部变量,局部变量
内联函数可以减少函数调用的开销
函数返回局部变量