二维数组的元素为字符串的赋值问题?

有以下程序#include<stdio.h>main(){charss[3][5]={"aaaa","bbbb","cccc"};inti=0;do{ss[i][++i]... 有以下程序
#include <stdio.h>
main()
{ char ss[3][5]={"aaaa","bbbb","cccc"};
int i=0;
do
{ ss[i][++i]=0; }
while( i<3 );
do
{ puts(ss[i-1]); }
while( --i>0 );
}
执行后的输出结果是______。

答案:ccc
bb
a
请问:不应该是ccc0吗?程序中ss[i][++i]=0; 应该为ss[i][++i]=‘/0’;的解才是给的答案吧
bb00
a000
展开
 我来答
XIN6030
2020-02-20 · TA获得超过465个赞
知道小有建树答主
回答量:686
采纳率:68%
帮助的人:214万
展开全部

你的答案也是错的;


你可以找台编译器试试,我的编译器是这样的结果;

第一次运行这里,从右往左,先++i,后i=1;在ss【1】【1】(++i优先使用原则)bbbb,变成了b0bb,这个0 ascii就是\0,所以字符串就是b只有一个,同理,c也就是有两个cc0c;aaaa不变

这里还有一种可能,计算机的计算方式不同,也就是从左到右边的富值

ss[0][1] a0aa 同理推,bb0b, ccc0计算器把0视为\0结束符号处理了,

折柳成萌
高粉答主

2020-02-20 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:4.4万
采纳率:96%
帮助的人:6074万
展开全部
1.C/C++中数组是不能整体赋值的,只能声明时附带初始化。初始化是编译期行为,而赋值是运行期行为,两者是严格不同的。
int a[3][4]={1,5,9,10};
左边是int [3][4]类型,右边是int []类型,初始化列表和初始化变量类型不匹配,会出现编译警告。
不过关于值的问题,LZ的想法基本正确。初始化中按地址顺序复制初始化列表的值给数组元素。不过要注意,如果不初始化,数组的值将是随机数(除非数组是全局变量或静态变量,会自动初始化为0)。
2.注意C中的“多维”数组实际是数组的数组(……的数组)。因此char xx[4][10]的元素是4个char [10]类型的变量。这里的初始化中是把
"adfd","dfc","dfadf","fdalipe"分别放到xx[0]、xx[1]、xx[2]、xx[3]中。
xx[0]之类作为一个char [10]类型的变量,即char类型定长数组,可以容纳一个长度小于10的字符串,所以这里的的初始化是合法的。每个字符串常量用于初始化时,把各个字符按连续地址顺序依次复制到目标变量的对应位置中,遇到字符串结尾编译器会自动在后面补'\0'。这里只要进行了初始化,变量中余下的未被初始化字符串覆盖的空间会在初始化前预先置为0(即'\0'、NULL)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式