【经验分享】C语言二维数组

Explorer 发布于 2024-12-13 310 次阅读


AI 摘要

C语言二维数组,看似复杂,实则有章可循!本文将由浅入深,为你揭秘二维数组的创建、初始化与使用,从`int arr[3][5]`到灵活的C99变长数组,带你玩转行与列。更有经典实例“字符汇聚”,手把手教你运用`strlen`和`sizeof`,让字符在方寸间翩翩起舞。准备好解锁你的C语言新技能了吗?让我们即刻启程,探索二维数组的奥秘!

一、二维数组的创建

1.二维数组的创建

type arr_name[常量1][常量2];

例如:
int arr[3][5];
double data[2][8];
char ch[][];

//3表示数组有三行,5代表数组每一行有5个元素。int代表数组中的元素为整数。

2.二维数组的初始化

像一维数组一样,同样使用大括号初始化

//不完全初始化,剩余元素默认为0;
int arr1[3][5] = {1,2};
int arr2[3][5] = {0};

//按照行初始化,第2,3,4列都为0;
int arr3[3][5] = {{1,2},{3,4},{5,6}}

//完全初始化
int arr4[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};

//初始化时候可以省略行,但是不能省略列
int arr4[][5] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

二、二维数组的使用

3.二维数组的输入与输出

c语言规定数组的索引要从0开始,包括行与列

#include<stdio.h>
int main(){
 int arr[3][5] = {0};
 int i = 0;
 for(i = 0; i < 3; i++) {
 int j = 0;
 for (j = 0; i < 5; j++) {
 scanf("%d",&a[i][j]);
}
}
 for(i = 0; i < 3; i++) {
 int j = 0;
 for (j = 0; i < 5; j++) {
 printf("%d",a[i][j]);
}
 printf("\n");
}
return 0;
}

三、实操练习

字符从两端移动,到中间汇聚

前提:

strlen求的是字符串的长度,统计的是字符串中/0之前的长度。

sizeof是数组所占内存空间的大小(单位是字节),包括/0。

#include<stdio.h>
#include<string.h>

int main() {
char arr1[] = "welcome to China!!!";
char arr2[] = "###################";
int left = 0;
int right = strlen(arr1) - 1;

while(left <= right) {
 arr2[left] = arr1[left];
 arr2[right] = arr1[right];
left++;
right--;
printf("%s\n", arr2);
}
return 0;
}

输出以下

w#################!
we###############!!
wel#############!!!
welc###########a!!!
welco#########na!!!
welcom#######ina!!!
welcome#####hina!!!
welcome ###China!!!
welcome t# China!!!
welcome to China!!!

关于C99中的变长数组

在C99标准中,变长数组(Variable Length Arrays, VLA)是一种允许数组的大小在运行时动态确定的特性。与传统的静态数组不同,变长数组的大小不是在编译时确定,而是在程序运行时动态指定

#include <stdio.h>

void example(int n) {
    int array[n];  // n是一个运行时确定的值
    for (int i = 0; i < n; i++) {
        array[i] = i + 1;
    }
    for (int i = 0; i < n; i++) {
        printf("%d ", array[i]);
    }
    printf("\n");
}

int main() {
    int size;
    printf("Enter the size of the array: ");
    scanf("%d", &size);
    example(size);
    return 0;
}

输入5输出1 2 3 4 5;

此作者没有提供个人介绍。
最后更新于 2025-06-28