快速了解C语言基础(10)(二维函数)

发布时间:2026/8/3 5:56:33
快速了解C语言基础(10)(二维函数) 8.函数和一维字符型数组传参char 数组名[100]定义返回值 函数名 (char 数组名[]){函数体}调用函数名(数组名)调用函数名(数组名);void print_str(char str[]){}print_str(str)注意(1)一维字符型数组作为函数参数传递时只需要传递数组即可不需要传递长度因为字符型数组保存的字符串末尾有‘\0’结束标志(2)数组作为函数参数传递时本质传递的是数组的首元素地址(在被调函数族sizeof(数组名形参)) ----》本质求地址在计算机内存中的大小。9. 函数和二维整形数组传参定义返回值 函数名int 数组名[][列数]int 行数{}调用函数名(数组名行数)int a[3][4] {0};void print_2D_array(int a[][4], int hang){}printf_2D_array(a, sizeof(a)/sizeof(a[0]))注意(1)二维整形数组传参时形参必须说明是二维数组行数可以省略列数不能省略。形参int a[][列数](2)在自定义的函数中行数无法计算所以可以通过参数的方式传递(3)在自定义的函数中列数可以计算sizeof(a[0]) / sizeof(a[0][0])10.函数和二维字符型数组传参定义返回值 函数名(char 数组名[][列数], int 行数){}调用函数名(数组名 行数);char str[3][100] {0};void print_2DC_array(char str[][100], int hang){}print_2DC_array(str, 3)11.变量的作用域和生命周期1)标识符作用域空间角度作用域标识符/变量可以被使用的范围局部作用域在{}内部被定义的变量的作用范围局部变量定义在局部作用域中的变量函数内部定义的变量、函数形参全局作用域可使用范围在全局{}外面。比如定义函数全局变量定义在全局作用域的变量。注意(1)标识符必须先定义再使用。(2)在相同作用域中不能定义同名标识符变量、函数。(3)在具有包含关系的作用域中出现了同名标识符外层标识符在内层不可见就近原则2)变量的生命周期时间角度变量的生命周期从变量的空间开辟到空间回收对应的生存期。动态生命周期局部变量在被定义的时候开辟空间超出其作用域范围空间被回收。静态生命周期和程序运行的生命周期一样长全局变量从程序运行之前空间开辟程序运行结束空间被回收。static修饰的静态变量从程序运行之前空间开辟程序运行结束空间被回收。1.作用域没发生变化局部作用域。2.生命周期变为静态生命周期总结:局部变量(1)作用域在局部超出局部作用域无法访问(2)动态生命周期定义时开辟空间超出作用范围空间被回收(3)局部变量保存在栈区未被初始化为随机值。全局变量/static静态变量(1)全局变量作用域在全局static静态变量作用域在局部(2)静态生命周期程序运行之前空间开辟程序运行结束空间被回收(3)全局变量/static静态变量保存在数据区。(4)全局变量/static静态变量未被初始化时默认为0。(5)未初始化的全局变量/static静态变量存储在.bss段.bss段系统默认清0.(6)已初始化的全局变量/static静态变量存储在.data段3)变量的存储类型int a存储类型 数据类型 变量名;变量的存储类型auto默认存储类型static(1)static修饰局部变量静态变量具备静态生命周期延长局部变量的生命周期。(2)static修饰函数该函数只允许在当前原文件中被调用。(3)static修饰全局变量该变量只允许在当前文件中使用。register寄存器变量register修饰变量时建议编译器将该变量存储在寄存器中register int i 0;register仅仅是一个建议。int *p;p i; //x i是寄存器变量无法取址extern修饰全局变量/函数声明。(1)extern修饰全局变量用来声明全局变量表示允许被外部的.c使用。(2)extern声明函数表示该函数允许被外部的.c使用