【C】零基础教我学会c语言(八)

📅 2026/7/30 16:36:57
【C】零基础教我学会c语言(八)
提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录前言一、二维字符型数组1.功能2.定义3.数组的初始化二、函数1.功能2.函数的定义3.函数的调用1.调用2.传参4.函数的声明5.变量的作用域和生存周期1.变量的作用域2.变量的生存周期6.变量的存储类型1.自动型存储局部变量默认auto2.寄存器存储register3.外部声明extern4.静态存储static7.函数传参总结前言好难 提示以下是本篇文章正文内容下面案例可供参考一、二维字符型数组1.功能主要用于存储和操作字符串数组2.定义str[0][2] 访问单个字符元素 charstr[0] 访问第一行字符数组 char[32]3.数组的初始化charstr[5][32]{{h,e,l,l,o,\0},{w,o,r,l,d,\0},{h,o,w,\0},{a,r,e,\0},{y,o,u,\0}};charstr[5][32]{{hello},{world},{how},{are},{you}};charstr[5][32]{hello,world,how,are,you};charstr[5][32]{0};charstr[][32]{hello,world,how,are,you};二、函数1.功能避免重复性代码让程序模块化2.函数的定义函数类型 函数名(数据类型1形参1,数据类型2形参2,...){函数体;return返回值;}函数名与变量名要求保持一致形参形式参数用来展示函数对数据的处理方式函数类型函数运行结果的类型返回值与函数类型不一致时以函数类型为准函数类型不写默认为int型返回值return函数的运行结果3.函数的调用函数名(实参1,实参2,...);1.调用通过函数名加实参使用函数主调函数主动调用函数的函数 被调函数被别人调用的函数2.传参主调函数调用被调函数会将实参的值传递给形参实参个数与形参个数必须一一对应 如果实参与形参类型不匹配则将实参类型强制类型转换为形参类型再传参函数调用结果类型为函数类型函数调用结果的值为函数的返回值4.函数的声明1.如果被调函数在主调函数下方定义需要在主调函数上方声明被调函数2.如果被调函数在主调函数上方定义不需要声明被调函数#includestdio.hintadd(inta,intb);//提前声明被调函数intmain(void){intret0;retadd(100,200);printf(ret %d\n,ret);return0;}intadd(inta,intb){returnab;}5.变量的作用域和生存周期1.变量的作用域能够使用变量的范围 1.局部变量变量作用域在定义该变量的最近的大括号里 2.全局变量作用域在本文件中均可用2.变量的生存周期变量从开辟空间到空间被回收的整个过程称为生存周期6.变量的存储类型1.自动型存储局部变量默认auto将变量存放在栈区 局部变量未经初始化为随机值 执行到变量定义时为变量开辟空间 执行到超过变量作用域范围被回收2.寄存器存储register将变量存放在CPU的内部的寄存器中如果寄存器存满了就等价于auto类型3.外部声明extern声明变量或者函数是外部存储的调用另一个文件实现程序//被调函数文件.cintnum1100;intnum2200;intadd(intx,inty){returnxy;}//主函数#includestdio.hexternintnum1;//声明变量是外部存储的externintnum2;externintadd(intx,inty);//声明函数是外部存储的intmain(void){intret0;retadd(num1,num2);printf(ret %d\n,ret);return0;}gcc编译时两个文件一起编译4.静态存储static变量存放在静态区中未经初始化时值为0值编译代码时为变量分配空间main之前就分配了内存执行时加载到数据区中程序结束就回收空间限定变量/函数作用域只能在本文件中使用可以防止多文件编程时变量名或函数名冲突#includestdio.hintg0;//全局变量(已初始化)存放在已初始化静态数据区程序结束回收空间inth;//全局变量未初始化存放在未初始化静态数据区程序结束回收空间未初始化为0intmain(void){inti0;inta0;//局部变量auto型存放在栈区执行到定义时才开辟空间超过变量作用域范围被回收for(i0;i3;i){intb0;//局部变量栈区intc;//局部变量栈区未初始化为随机staticintd;//静态存储static未初始化为0编译时就分配空间整个程序结束才回收staticintf100;a;//1 2 3b;//1 1 1c;//随机d;//1 2 3f;//101 102 103g;//1 2 3h;//1 2 3printf(a %d, b %d, c %d, d %d, f %d, g %d, h %d\n,a,b,c,d,f,g,h);}#if0staticinta;staticintb100;hello world;a100;#endifreturn0;}7.函数传参值传递实参将值传递给形参形参拿到实参的值实现后续操作总结函数和数组咋这么难