09-C语言-二维字符串-函数
二维字符串数据
初始化
char 变量名[行][列] = {"字符串1", "字符串2"...};
char date[12][32] = {0};
行就是字符串的数量,列为每个字符串的元素数量
打印
只使用一个for遍历行,也就是每个字符串即可
赋值
字符串不能对整体进行赋值或操作,但可以使用复制函数,来进行赋值
strcpy(date[0], "january");
strcpy(date[1], "february");
strcpy(date[2], "march");
strcpy(date[3], "april");
strcpy(date[4], "may");
strcpy(date[5], "june");
strcpy(date[6], "july");
strcpy(date[7], "august");
strcpy(date[8], "september");
strcpy(date[9], "october");
strcpy(date[10], "november");
strcpy(date[11], "december");
函数
功能:能够避免重复性的代码
可以让程序更加模块化
位置:在int main(void)的上面
函数的三种形式:
函数的定义:
函数类型 函数名(数据类型1 形参1, 数据类型2 形参2, ...)
{
函数体;
返回值;
}
函数名要求与变量名保持一致
形参,形式参数,用来展示函数对数据的处理方式,前面必须要有数据类型。
函数类型,表示函数结果的类型,默认返回0为int,如果不需要返回值的话
返回值类型由函数类型决定,如果返回值与函数类型不一致时。
函数类型不写默认为int类型
void 缺省类型,没有返回值
函数的调用
函数名(实参1, 实参2);调用的时候就不需要加参数的数据类型了
如果实参类型与形参类型不一致,以形参参数为主
主调函数:主动调用函数的函数
被调函数:被别人调用的函数
传参:主调函数调用被调函数会把实参的值传递给形参
实参个数必须与形参一一对应
如果实参与形参类型不匹配,则将实参数类型强制转化为形参类型再传参
函数的声明
函数类型 函数名(数据类型1 形参1, 数据类型2 形参2, ...);
注意!!!:函数声明小括号后必须有分号,函数定义小括号后不加分号!!!
如果被调函数在main函数下方定义,需要对函数进行声明,将带函数类型的第一行放在main函数前
如果被调函数在主调函数上方声明,就不用声明了
变量的作用区域以及生存周期
变量的作用区域
局部变量:变量在{}中定义所以作用区域在{}中,不能跳到其他同级{}或上级{}
全局变量:定义在头文件后,在所有的{}之外,全部可以使用
变量的生命周期:
变量从开辟空间到回收空间
数据的存储类型
存储类型 数据类型 变量名
auto 程序自动存储-内存的栈区
register 寄存器类型-CPU中,快,寄存器满了等价与auto类型
extern 外部声明 声明不具备创建空间功能,只能有一个main函数
声明变量或函数是外部存储的
extern int a;
extern int b;
extern int jia(int a, int b);
static 静态存储-外存-a.out中
限定变量或函数的作用域只能在本文件中使用,使用extern也调用不了静态存储
防止多文件编程时,变量或函数名冲突
1.未经初始化时值为0值
2.编译时为变量分配存储空间,运行时将空间加载内存数据区中
3.程序结束回收空间
(以下为内存空间) 变量的定义以及初始化只会在 编译时执行一次 用于开辟空间,后续不再重复执行
内核
栈区-auto-自动型存储-局部变量
操作系统管理区域,局部变量未经初始化变量区域,随机值
1.未经初始化为随机值
2.程序执行到变量定义时为变量开辟空间
3.程序执行超过变量的作用区域回收空间
堆区
程序员手动管理区域
数据区 (对为初始化的变量清0然后接收a.out的数据)
特点:
1.未经初始化时值为0值
2.编译时为变量分配存储空间,运行时将空间加载内存数据区中
3.程序结束回收空间
类型:
1.字符串常量区,双引号括起来的
2.未初始化全局变量/静态变量
3.已初始化全局变量/静态变量
文本区:存放代码,指令,函数
函数传参:
1.值传递:
实参将值传递给形参
