【学习笔记之我要C】数组

简介: 【学习笔记之我要C】数组

一、一维数组

  1.一维数组的创建

int main() {
  int arr[8];//数组类型 数组名[元素个数];
  char ch[3];
  return 0;
}

注:元素个数一定是一个常量表达式,形如arr[n]的数组创建只有在C99语法下才支持,有些编译器能够编译这样的代码,但不建议使用。

  2.一维数组初始化

int main() {
  int arr1[3] = { 1, 2, 3 };//完全初始化
  int arr2[3] = { 1, 2 };//不完全初始化
  /*
  以下两行代码等价
  int arr3[3] = { 1, 2, 3 };
  int arr3[] = { 1, 2, 3 };
  */
  return 0;
}

  注意区分以下代码:

int main() {
  char ch1[5] = { 'b', 'i', 't' };
  char ch2[] = { 'b', 'i', 't' };
  char ch3[5] = "bit";// b i t \0 0
  char ch4[] = "bit";// b i t \0
  return 0;
}

61ce16316d26422f88116bf2cbccf6f4.png

be9db3d3e2f94f83b2b4bb1ded8a12e5.png

因为\0是结束标志,而ch2并没有\0,所以它会接着往下打印,直到找到\0为止。

574d6ebcee3a44809566f7bbc02b06e9.png

3.一维数组的内存存储

int main() {
  int arr[5];
  char ch[5];
  int i = 0;
  for (i = 0; i < 5; i++) {
    printf("arr[%d] = %p ", i, &arr[i]);//%p - 按地址格式打印 - 十六进制打印
    printf("ch[%d] = %p\n", i, &ch[i]);
  }
  return 0;
}

688c3ef8e4224318bd888fa0d047644a.png

二、二维数组

  1.二维数组的创建

int main() {
  //创建
  //数组类型 数组名[行元素个数][列元素个数];
  int arr[3][4];
  char ch[3][4];
  return 0;
}

 2.二维数组初始化

int main() {
  //初始化 - 创建的同时赋值
  int arr1[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
  int arr2[3][4] = { 1,2,3,4,5,6,7 };//不完全初始化 - 后面补0
  int arr3[3][4] = { {1, 2}, {3, 4}, {5, 6} };
  int arr4[][4] = { {1, 2}, {3, 4}, {5, 6} };//行可以省略,但是列不能省略
  return 0;
}

image.png

注:为了代码的易读性,建议每行用一个{}括起来,可以理解把二维数组理解为一个一维数组里放了几组一维数组。

  3.二维数组的内存存储

int main() {
  int arr[3][4] = { {1,2},{3,4},{5,6} };
  int i = 0;
  int j = 0;
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 4; j++) {
      printf("arr[%d][%d] = %p\n", i, j, &arr[i][j]);
    }
  }
  return 0;
}

e57ed1d0a4194039a3f2295f1d353cc0.png

由上图可以看出,每个arr元素的地址之间大小差还是4个字节,第一行的最后一个元素与第二行的第一个元素之间的大小差也是4。所以二维数组在内存中也是连续存放的,也是随着地址的增长,地址由低到高变化。

目录
相关文章
|
2月前
|
存储
数组的进阶
数组的进阶
|
8月前
|
安全 编译器 C语言
C++入门-数组
素组是一种数据格式,能储存多个同类型的值。
|
12月前
数组的简单认识及其学习(二)
数组的简单认识及其学习(二)
50 0
|
7月前
|
算法 前端开发 程序员
前端算法专栏-数组-215. 数组中的第K个最大元素
前端算法专栏-数组-215. 数组中的第K个最大元素
|
11月前
|
前端开发
前端——把一个数组添加到另一个数组里
前端——把一个数组添加到另一个数组里
|
11月前
数组的学习
数组的学习
|
12月前
数组的简单认识及其学习(一)
数组的简单认识及其学习(一)
43 0
|
编译器 C语言
【学习笔记之我要C】深入理解数组与指针
【学习笔记之我要C】深入理解数组与指针
36 0
|
数据建模 Go 开发者
数组的使用|学习笔记
快速学习数组的使用。
109 0
数组的使用|学习笔记
|
Go 开发者
二维数组的遍历方式|学习笔记
快速学习二维数组的遍历方式
109 0
二维数组的遍历方式|学习笔记