C语言中的数组与函数
- 数组
- 数组名称与类型:
int arr[10];
其中arr为数组名,int [10]为数组类型。
- 二维数组
// 行 列
int arr[2][3];//表示二行三列
- 二维数组的初始化:
不完全初始化:
int arr[2][3]={1,2,3,4};
初始化结果: 1 2 3
4 0 0
完全初始化:
int arr[2][3]={{1,2},{3,4},{5,6}}//可以一行一行的初始化(把一行当作一个一维数组)
注:初始化可以省略行,但是不可以省略列。
数组在内存中的储存:
int arr[][2]={1,2,1,2,1,2};//数字1,2代表列
第一行 第二行 第三行 …
1 2 1 2 1 2 …
因为省略行计算机可以按顺序接着往下排列,但省略列计算机无法得知第二列排在哪里。
- 函数
int Add(int a,int b)//函数的形参
{
return a+b;
}
int main()
{
int a = 0,b = 0;
int m = Add(a,b);//函数的实参
return 0;
}
- static与extern
- static
static修饰局部变量:
void Fun()
{
static int i = 0;
i++;
printf("%d ", i);
}
int main()
{
for (int j = 0; j < 10; j++) {
Fun();
}
return 0;
}
执行结果:
有static:1 2 3 4 5 6 7 8 9 10
无static:1 1 1 1 1 1 1 1 1 1
注:如果重复调用Fun( )函数,每次调用时的i不会被重新创建与销毁,而是使用上次的值然后在执行以下的操作。
- extern与static在多文件下的作用:
extern是用来声明外部符号(多文件情况下),如果在 gameA.c 文件中定义变量 int a = 0;如果想要在 gameB.c 文件中使用该变量,则需要使用 extern int a;来使用变量 a。
如果在如果在 gameA.c 文件中定义变量static int a = 0;则 a 变量只能在 gameA.c 文件下使用。使用static修饰函数也是如此。
- 函数的递归
在写函数递归时,优先考虑结束递归的条件。