欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > STLG_01_08_程序设计C语言 - 数组

STLG_01_08_程序设计C语言 - 数组

2025/2/2 4:37:58 来源:https://blog.csdn.net/cdlislxjt/article/details/144935787  浏览:    关键词:STLG_01_08_程序设计C语言 - 数组

        数组是C语言中用于存储多个数据的容器,它们在内存中是连续的,可以通过索引访问其中的元素。数组对于C语言编程是非常重要的,因为它们是处理大量数据的基础。

1. 数组基础

1.1 数组定义与初始化
  • 定义数组:指定数据类型和数组名,后跟方括号中的元素个数。
    • 例如:int numbers[5];
  • 初始化数组:在定义时直接赋值。
    • 例如:int numbers[] = {1, 2, 3, 4, 5};
1.2 数组索引
  • C语言数组索引从0开始。
  • 例如:numbers[0] 是第一个元素。
1.3 数组大小
  • 数组大小在定义时确定,不能动态改变。
  • 例如:int numbers[5]; 数组大小为5。

2. 一维数组

2.1 访问元素
  • 使用索引访问数组元素。
  • 例如:numbers[2] 访问第三个元素。
2.2 遍历数组
  • 使用循环(如for循环)遍历数组。
  • 例如:
    for(int i = 0; i < 5; i++) {printf("%d\n", numbers[i]);
    }
    
2.3 数组作为函数参数
  • 可以将数组传递给函数。
  • 例如:
    void printArray(int arr[], int size) {for(int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");
    }
    

3. 多维数组

3.1 二维数组
  • 二维数组可以看作是数组的数组。
  • 定义:int matrix[3][4];
  • 初始化:int matrix[3][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
3.2 访问元素
  • 使用两个索引访问元素。
  • 例如:matrix[1][2] 访问第二行第三列的元素。
3.3 遍历二维数组
  • 使用嵌套循环遍历。
  • 例如:
    for(int i = 0; i < 3; i++) {for(int j = 0; j < 4; j++) {printf("%d ", matrix[i][j]);}printf("\n");
    }
    

4. 字符数组与字符串

4.1 字符数组
  • 字符数组用于存储字符序列。
  • 例如:char name[10];
4.2 字符串
  • C语言中的字符串是以空字符\0结尾的字符数组。
  • 例如:char str[] = "Hello";
4.3 字符串操作
  • 使用标准库函数如strlenstrcpystrcat等。
  • 例如:
    #include <string.h>
    char str1[] = "Hello";
    char str2[] = "World";
    strcat(str1, str2); // 结果为 "HelloWorld"
    

5. 动态数组与指针

5.1 指针与数组
  • 数组名本质上是一个指针,指向数组的第一个元素。
  • 例如:int *ptr = numbers;
5.2 动态分配数组
  • 使用mallocfree进行动态内存分配。
  • 例如:
    int *dynArr = (int*)malloc(5 * sizeof(int));
    if(dynArr != NULL) {// 使用动态数组free(dynArr);
    }
    

6. 示例与实践

6.1 示例代码
#include <stdio.h>
#include <string.h>int main() {// 一维数组int numbers[5] = {1, 2, 3, 4, 5};for(int i = 0; i < 5; i++) {printf("%d ", numbers[i]);}printf("\n");// 二维数组int matrix[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9,10,11,12}};for(int i = 0; i < 3; i++) {for(int j = 0; j < 4; j++) {printf("%d ", matrix[i][j]);}printf("\n");}// 字符数组与字符串char str[] = "Hello";printf("%s\n", str);strcat(str, " World");printf("%s\n", str);// 动态数组int *dynArr = (int*)malloc(5 * sizeof(int));if(dynArr != NULL) {for(int i = 0; i < 5; i++) {dynArr[i] = i * 10;}for(int i = 0; i < 5; i++) {printf("%d ", dynArr[i]);}printf("\n");free(dynArr);}return 0;
}

6. 常见问题与解答
  • 问题1:数组和指针有什么区别?
    • 解答:数组是一个连续的内存块,包含多个元素;指针是一个变量,存储内存地址。虽然数组名可以 decay 为指针,但它们是不同的概念。
  • 问题2:为什么字符串以\0结尾?
    • 解答:C语言中,字符串以\0结尾是为了标识字符串的结束,因为在内存中字符数组可能包含其他数据,\0用于明确字符串的边界。

7. 总结

        数组是C语言中处理数据的强大工具,掌握数组的定义、初始化、访问、遍历以及与指针的关系,对于开发高效、灵活的C程序至关重要。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com