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

书上的一个题,为什么charhao[][5]={{'','','*'},{'','*','','*'},{'*','','','','*'},{'','*','','*'... 书上的一个题,为什么 char hao[][5]={{' ',' ','*'}, {' ','*',' ','*'}, {'*',' ',' ',' ','*'}, {' ','*',' ','*'}, {' ',' ','*'} };是正确的

char hao[5][5]; hao[][5]={{' ',' ','*'}, {' ','*',' ','*'}, {'*',' ',' ',' ','*'}, {' ','*',' ','*'}, {' ',' ','*'} };是错误的。

顺便问一下,二维数组如何对一行数据进行初始化,即每次初始化一行.....谢了
展开
 我来答
一口没水的枯井
推荐于2017-09-09 · TA获得超过2988个赞
知道小有建树答主
回答量:473
采纳率:100%
帮助的人:150万
展开全部

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;
}

    

461432360
推荐于2017-09-25 · TA获得超过136个赞
知道答主
回答量:102
采纳率:0%
帮助的人:71万
展开全部
二维数组可以在定义的时候初始化,就像上面那样。
如果已经定义了一个二维数组,就不能批量初始化,必须对二维数组每个元素hao[i][j]单独进行初始化。C语言里面不能对一行数据进行初始化的。
对于一个二维数组,你可以用两层for循环,对每个元素初始化。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lishimin1972
2014-01-17 · TA获得超过741个赞
知道小有建树答主
回答量:391
采纳率:0%
帮助的人:453万
展开全部
第一个是初始化,由编译器赋值,可以一次多个同时初始化。
下一个是赋值语句,由程序本身赋值,不允许一次赋值多个元素。
要对一行数据赋值,必须用循环语句,一个一个来。
对一行数据初始化,可以用上述方法,根据数据量的多少尽可能初始化前面的行,剩余的部分
可能填0,可能是未知数,这取决于编译器。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2015-09-18 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6412万
展开全部
二维数组只能在定义的时候初始化,初始化方式如下:
char hao[][5]={
{' ',' ','*'},
{' ','*',' ','*'},
{'*',' ',' ',' ','*'},
{' ','*',' ','*'},
{' ',' ','*'} }; //第一维度没有给出,按初始化的行数,确定数组第一维度。

初始化定义:在定义变量时,同时完成对变量的初始赋值,称为变量初始化。
在定义变量以后(未初始化),再对变量值的改变操作叫赋值!所以,初始化,只能在变量定义时进行。
char hao[][5] ; //这样写是错误的,因为,这里没有初始化,第一维是空的,系统不知道如何分配变量空间!
hao[][5]={{...}} ; //这样写更是错误,此时,hao[][5]这种写法为数组元素的引用,括号中必须要有合理的下标值,不能是空,不能超过数组行列数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
炮灰4
2014-01-17 · TA获得超过556个赞
知道小有建树答主
回答量:790
采纳率:0%
帮助的人:349万
展开全部
烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式