一维数组
type_t arr_name[const_n]
type_t : 数组元素的类型
arr_name : 数组名称
const_n : 是一个常量表达式,用来执行数组的大小
1 2 3 4
| // 数组的不完全初始化 int arr[10] = {0}; // 计算数组的元素个数 int sz = sizeof(arr)/sizeof(arr[0]);
|
1 2 3 4 5 6 7 8 9 10 11 12
| #include <stdio.h>
int main(int argc, const char * argv[]) { // 数组不完成初始化 int arr[10] = {0}; int sz = sizeof(arr)/sizeof(arr[0]); for (int i=0; i<sz; i++) { printf("&arr[%d]=%p\n",i,&arr[i]); } return 0; }
|
查看打印结果
1 2 3 4 5 6 7 8 9 10 11
| &arr[0]=0x7ff7bfeff3c0 &arr[1]=0x7ff7bfeff3c4 &arr[2]=0x7ff7bfeff3c8 &arr[3]=0x7ff7bfeff3cc &arr[4]=0x7ff7bfeff3d0 &arr[5]=0x7ff7bfeff3d4 &arr[6]=0x7ff7bfeff3d8 &arr[7]=0x7ff7bfeff3dc &arr[8]=0x7ff7bfeff3e0 &arr[9]=0x7ff7bfeff3e4 Program ended with exit code: 0
|
二维数组
1 2 3
| int arr[行][列]
int arr[3][4] = {{1,2},{3,4}};
|
1 2 3 4 5 6 7 8 9 10
| int main(int argc, const char * argv[]) { int arr[3][4] = {{1,2,3},{5,6,7,8}}; for (int i=0; i<2; i++) { for (int j=0; j<2; j++) { printf("%d\n",arr[i][j]); } } return 0; }
|
内存是连续的
数组作为形式参数
有三种方式告诉编译器将要接收一个 整型指针
- 形式参数是一个指针
1 2 3
| void myFunc(int *param){ ... }
|
- 形式参数是一个已定大小的数组
1 2 3
| void myFunc(int param[10]){ ... }
|
- 形式参数是一个未定义大小的数组
1 2 3
| void myFunc(int param[]){ ... }
|
从函数返回数组
C 语言不允许返回一个完成的数组,可以通过 声明一个返回指针的函数