c语言二维数组如何初始化

发布网友 发布时间:2022-04-23 01:01

我来回答

5个回答

热心网友 时间:2022-04-15 02:50

1 有两种方法

    (1)在定义时可以直接赋值来初始化

    (2)在定义后可以为其元素一个个来赋值

2 示例

#include<stdio.h>
void display(int arr[2][3], int row, int col){
for (int i = 0; i < row; i++){
for (int j = 0; j < col; j++){
printf("%d ", arr[i][j]);
}
puts("");
}
puts("");
}
int main(){
//方法(1)
int arr1[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };

//方法(2)
int arr2[2][3];
int num = 1;
for (int i = 0; i < 2; i++){
for (int j = 0; j < 3; j++){
arr2[i][j] = num++;
}
}

display(arr1, 2, 3);
display(arr2, 2, 3);

getchar();
return 0;
}

3 运行结果

    由结果可知,两种方式达到的效果是一样的

4 扩展

    由于C语言中数组中的元素的地址是连续的,所以下面的写法也是可以的,运行效果同上

#include<stdio.h>
void display(int arr[2][3], int row, int col){
for (int i = 0; i < row*col; i++){
for (int j = 0; j < col; j++){
printf("%d ", arr[i][j]);
}
puts("");
}
puts("");
}
int main(){
//方法(1)
int arr1[2][3] = { 1, 2, 3, 4, 5, 6 };

//方法(2)
int arr2[2][3];
int num = 1;
int *p = *arr2;//指向数组的第一个元素
for (int i = 0; i < 2 * 3; i++){
*p++ = num++;
}

display(arr1, 2, 3);
display(arr2, 2, 3);

getchar();
return 0;
}

    

热心网友 时间:2022-04-15 04:08

二维数组可以在定义的时候初始化,就像上面那样。
如果已经定义了一个二维数组,就不能批量初始化,必须对二维数组每个元素hao[i][j]单独进行初始化。C语言里面不能对一行数据进行初始化的。
对于一个二维数组,你可以用两层for循环,对每个元素初始化。

热心网友 时间:2022-04-15 05:43

第一个是初始化,由编译器赋值,可以一次多个同时初始化。
下一个是赋值语句,由程序本身赋值,不允许一次赋值多个元素。
要对一行数据赋值,必须用循环语句,一个一个来。
对一行数据初始化,可以用上述方法,根据数据量的多少尽可能初始化前面的行,剩余的部分
可能填0,可能是未知数,这取决于编译器。

热心网友 时间:2022-04-15 07:34

二维数组只能在定义的时候初始化,初始化方式如下:
char hao[][5]={
{' ',' ','*'},
{' ','*',' ','*'},
{'*',' ',' ',' ','*'},
{' ','*',' ','*'},
{' ',' ','*'} }; //第一维度没有给出,按初始化的行数,确定数组第一维度。

初始化定义:在定义变量时,同时完成对变量的初始赋值,称为变量初始化。
在定义变量以后(未初始化),再对变量值的改变操作叫赋值!所以,初始化,只能在变量定义时进行。
char hao[][5] ; //这样写是错误的,因为,这里没有初始化,第一维是空的,系统不知道如何分配变量空间!
hao[][5]={{...}} ; //这样写更是错误,此时,hao[][5]这种写法为数组元素的引用,括号中必须要有合理的下标值,不能是空,不能超过数组行列数。

热心网友 时间:2022-04-15 09:42

烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com