字符型二维数组
作用:在C语言中字符型二维数组主要用来存放字符串数组
1、定义:
数据类型 数组名[第一维元素个数][第二维元素个数];
例如:char str[5][32];
2.元素访问:
例如:str[0][0];
或者 str[0]
3、数组存储的特性:
连续性:数组元素存放空间连续
有序性:数组元素存放顺序有序
4、数组的初始化:
1.局部初始化:
例如:char str[3][32] = {{'h', 'o', 'w', '\0'}, {'a', 'r', 'e', '\0'}, {'y', 'o', 'u', '\0'}};
char str[3][32] = {{"how"}, {"are"}, {"you"}};
char str[3][32] = {"how", "are", "you"};
char str[3][32] = {0};
2.默认初始化:
例如:char str[][32] = {"how", "are", "you"};
函数(C语言的第二大重点)
函数的作用 :
1.能够让程序模块化
2.可以减少重复性代码
一、函数的三种形式:
1、函数的定义:
函数类型 函数名(数据类型1 形参1, 数据类型2 形参2, ...)
{
函数体;
return 返回值;
}
函数名:和变量名要求保持一致
函数类型:函数运行结果的类型(如果返回值类型与函数类型不一致,会将返回值强制类型转换成函数类型返回)
不写函数类型默认为int类型
如果没有返回值,函数类型应该为void类型
返回值:函数的运行结果
形参:形式参数(接受实参的传参)
需要注意:
函数没有返回值,return后面什么都不写
2、函数的调用:
函数名(实参1, 实参2, ...);
需要注意:
1.实参个数必须与形参个数一致,并一一对应
2.实参可以是常量、变量、表达式
3.实参与形参类型不一致时,会将实参强制类型转换为形参类型,传入函数中
4.函数调用时会发生传参的过程(实参将值传递给形参)
3、函数的声明:
声明和定义的区别:
1.声明:声明一个已经存在的变量或函数
2.定义:定义一个之前不存在的变量或函数,需要开辟新的空间
需要注意:
被调函数在主调函数下方定义,需要声明该函数
二、变量的作用域和生存周期:
1、作用域:变量能够使用的范围
1.局部变量:
局部变量作用域在离定义该变量最近的大括号内
2.全局变量:
全局变量作用域在整个文件中
2、生存周期:变量从开始被创建,到空间被回收的整个过程
(1)变量的存储类型:
存储类型 数据类型 数组名;
1.自动型存储(局部存储)(默认存储类型)
auto int a;
int a;
作用为:将变量存放到栈区中
1.未经初始化值为随机值
2.代码执行到变量定义时为变量开辟空间
3.超过变量的作用域回收变量空间
2.静态存储
static int a;
作用为:将变量存放到数据区中
1.未经初始化前值为0值
2.编译时为变量开辟空间
3.代码执行结束回收变量空间
除了修饰静态变量,还有2个功能:
1.限定变量的作用域只能在本文件中使用
2.可以防止多个文件中的全局变量重名
3.寄存器存储: 优先存放到CPU内部的寄存器中,如果寄存器存满了,等价于auto存放在栈区中
register
register int a;
4.外部存储:声明一个变量或函数是在外部存储的
extern int a;
三、函数的传参:
1、赋值传递(复制传递)
运用场景:1.函数体内想使用函数体外部变量的值,使用复制传递
2.函数体外部想获得函数体内部值的时候,通过返回值获得
2、全局变量传递