C语言数组

在C语言中,数组是一种用于存储多个相同类型数据的数据结构。

一、数组的声明

1.一维数组

1.格式:type array_namesize;,其中type是数组元素的类型,例如int、char等;array_name是数组的名称;size是数组中元素的个数,这个大小必须是一个常量表达式。

2.例如:int numbers5;声明了一个名为numbers的整数数组,它可以存储5个整数元素。

2.二维数组

1.格式:type array_namerowscolumns;。

2.例如:int matrix34;声明了一个二维数组matrix,它有3行4列,可以用来表示一个3×4的矩阵,元素类型为int。

二、数组的初始化

1.一维数组初始化

1.可以在声明数组时进行初始化。例如:int numbers5 = {1, 2, 3, 4, 5};,将数组numbers的元素分别初始化为1、2、3、4、5。

2.如果初始化的值少于数组的大小,剩余的元素会被初始化为0(对于数值类型)或者空字符(对于字符数组)。例如:int nums5= {1, 2};,那么nums2、nums3和nums4都将被初始化为0。

2.二维数组初始化

1.对于二维数组,可以按行进行初始化。例如:int matrix34={{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};。

2.也可以只给出部分初始值,未初始化的元素会被初始化为0。

三、数组元素的访问

1.一维数组

1.通过索引(下标)来访问数组元素,索引从0开始。例如,要访问numbers数组中的第3个元素(即索引为2的元素),可以使用numbers2

2.二维数组

1.使用两个索引,第一个表示行,第二个表示列。例如,要访问matrix数组中第2行第3列的元素(索引从0开始),可以使用matrix12

四、数组在内存中的存储

1.一维数组

1.一维数组的元素在内存中是连续存储的。例如,对于int numbers5;,numbers0、numbers1、numbers2、numbers3和numbers4在内存中依次排列。

2.二维数组

1.二维数组在内存中也是按行顺序连续存储的。例如,对于int matrix34;,先存储第一行的4个元素,再存储第二行的元素,以此类推。

五、数组作为函数参数

1.一维数组

1.当数组作为函数参数时,实际上传递的是数组的首地址(指针)。例如:

2.void printArray(int arr\[\], int size) {

for (int i = 0; i < size; i++) {

printf("%d ", arri);

}

printf("\n");

}

int main() {

int numbers5 = {1, 2, 3, 4, 5};

printArray(numbers, 5);

return 0;

}

3.在函数printArray中,arr实际上是一个指针,指向传递进来的数组的首地址。

2.二维数组

1.当二维数组作为函数参数时,需要指定第二维的大小。例如:

2.void printMatrix(int mat\[\]4, int rows) {

for (int i = 0; i < rows; i++) {

for (int j = 0; j < 4; j++) {

printf("%d ", matij);

}

printf("\n");

}

}

int main() {

int matrix34 = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};

printMatrix(matrix, 3);

return 0;

}

3.这里的mat是一个指向包含4个int元素的数组的指针。

相关推荐
free-elcmacom8 小时前
C语言字符指针与字符串字面量——从一道“剑指 Offer”笔试题说起
c语言·visual studio
free-elcmacom13 小时前
C语言指针进阶——指针数组模拟二维数组,以及二级指针到底怎么理解
c语言·visual studio code
山下梅子酒22514 小时前
洛谷-入门-B2049
c语言
剑指offer.16 小时前
嵌入式硬件-ARM芯片的启动
c语言·嵌入式硬件·嵌入式
Logic10117 小时前
C语言/数据结构动态规划题解:Kadane算法求最大子数组和——O(n)时间O(1)空间
c语言·数据结构·动态规划·贪心·时间复杂度·算法题·最大子数组和
雷✘18 小时前
C 程序从源文件到运行:预处理、编译、汇编、链接重定位与执行环境
c语言
Logic10119 小时前
C语言/数据结构位运算题解:异或XOR找出数据表中的“独特编号“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
endeavor1219 小时前
BootLoader与OTA学习(三)
c语言·stm32
布莱克60521 小时前
理解内存泄漏:成因、发现方法与解决策略(C++ 举例)
c语言·c++·内存泄漏
Logic10121 小时前
C语言/数据结构位运算题解:异或XOR找出英雄升级系统中的“独特经验值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质