HOME> 世界杯颁奖仪式> 一文彻底搞明白C语言的数组

一文彻底搞明白C语言的数组

程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java、鸿蒙、嵌入式、人工智能等开发,专注于程序员成长的那点儿事,希望在成长的路...

程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java、鸿蒙、嵌入式、人工智能等开发,专注于程序员成长的那点儿事,希望在成长的路上有你相伴!君志所向,一往无前!

1.数组

数组是 C 语言中最基本和最重要的数据结构之一,它为存储一组相同类型的数据元素提供了一种便捷的方式,并允许我们通过索引来访问这些元素。

2.数组的定义

在 C 语言中,数组的定义遵循以下基本语法:

type arrayName[arraySize];

其中:type 是数组元素的数据类型,可以是基本数据类型(如 int、float、char 等),也可以是自定义的数据类型。arrayName 是数组的名称,它是一个标识符,遵循 C 语言中标识符的命名规则。arraySize 是一个正整数,表示数组中元素的数量,它必须是一个常量表达式。

例如,定义一个包含 10 个整数的一维数组可以这样写:

int myArray[10];

3.数组的初始化

数组根据初始化的形式不一样,分为2种:1.静态初始化 2.动态初始化

静态初始化

可以在声明数组的同时为其元素赋初值,这称为静态初始化。以下是一些静态初始化的例子:

// 完全初始化

int numbers[5] = {1, 2, 3, 4, 5};

// 部分初始化,未初始化的元素将被自动初始化为 0(对于静态存储持续时间)或未定义(对于自动存储持续时间)

int anotherArray[5] = {1, 2};

// 不指定数组大小,编译器会根据初始化元素的数量来确定数组大小

int autoSizedArray[] = {1, 2, 3, 4, 5};

动态初始化

在程序运行时,可以使用循环和赋值语句来动态初始化数组。例如:

#include

int main() {

int dynamicArray[5];

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

dynamicArray[i] = i * 2;

}

return 0;

}

4.数组的存储

数组在内存中是连续存储的。

对于 int myArray[10] 这样的数组,元素 myArray[0] 存储在内存的某个位置,随后的元素 myArray[1] 存储在紧挨着 myArray[0] 的下一个位置,依此类推。元素之间的地址偏移量等于元素的大小(对于 int 类型,通常为 4 字节)。

可以使用 & 运算符来查看数组元素的地址:

#include

int main() {

int array[5] = {10, 20, 30, 40, 50};

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

printf("Address of array[%d] is %p\n", i, (void*)&array[i]);

}

return 0;

}

5.数组的访问

使用索引可以访问数组中的元素,索引从 0 开始,最大索引为 arraySize - 1。例如:

#include

int main() {

int array[5] = {1, 2, 3, 4, 5};

// 访问数组元素

printf("The third element is %d\n", array[2]);

return 0;

}

6.数组的常用操作

遍历数组

使用 for 循环是遍历数组的最常见方法:

#include

int main() {

int array[5] = {1, 2, 3, 4, 5};

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

printf("%d ", array[i]);

}

printf("\n");

return 0;

}

数组元素的修改

可以使用赋值语句修改数组元素:

#include

int main() {

int array[5] = {1, 2, 3, 4, 5};

array[2] = 10; // 修改第三个元素

return 0;

}

数组作为函数参数

可以将数组作为函数的参数传递,但需要注意的是,数组作为参数时,实际上传递的是数组的首地址,因此在函数中修改数组元素会影响原数组。以下是一个示例:

#include

// 函数声明

void printArray(int arr[], int size);

void modifyArray(int arr[], int size);

int main() {

int array[5] = {1, 2, 3, 4, 5};

printArray(array, 5);

modifyArray(array, 5);

printArray(array, 5);

return 0;

}

// 打印数组元素

void printArray(int arr[], int size) {

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

printf("%d ", arr[i]);

}

printf("\n");

}

// 修改数组元素

void modifyArray(int arr[], int size) {

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

arr[i] = arr[i] * 2;

}

}

好啦,这篇就到这里吧,希望大家要掌握数组哈,下一篇,咱们写一下二维数组,记得一键三连哈


上古卷轴5收集血液 鲨鱼记账