C语言学习06:数组

张建 lol

一维数组

  • 数组创建

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. 形式参数是一个指针
1
2
3
void myFunc(int *param){
...
}
  1. 形式参数是一个已定大小的数组
1
2
3
void myFunc(int param[10]){
...
}
  1. 形式参数是一个未定义大小的数组
1
2
3
void myFunc(int param[]){
...
}

从函数返回数组

C 语言不允许返回一个完成的数组,可以通过 声明一个返回指针的函数

1
2
3
int * myFunc{
...
}
  • Post title:C语言学习06:数组
  • Post author:张建
  • Create time:2023-02-13 20:36:53
  • Post link:https://redefine.ohevan.com/2023/02/13/C学习/C语言学习06:数组/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.