计算机二级C语言考试数组

img

img


只给出了前三个值后面的都默认赋初值为0,他这说字符串以\0结束,难道说后面的值为\0,ASCII值为0 。也就是说此0非0吗?也就是说把格式字符替换成%c就会输出ST#0000000?

char name[10] = {'S','T','R'},这么初始化的话,前三个字符分别为STR,后面7个字符都初始化为0了。这里的0就是'\0',一个意思。不是字符'0'
后面初始化的0是ASCII码的0,所以即使你用%c也是输出不了0的,要输出0就必须是字符'0'

不是的, 数组也是字符串,他说的/0,的意思是,你这个数组或则字符串输入完毕的标准是 /0,就是说/0是一个开关,他控制字符串和数组的结束。

他俩不是一个概念,一个是数字0,一个是控制符。

补充一下%s,是输出有效字符用的。也就是说截止到name[2]有效,后面的\0无效也就是说结束符。
把%s换成%c就不一样了,%c带代表输出字符。
只能一个个的输出字符

不对应该是ST#\0\00\0\0\0\0

定义的时候这个长度为10的字符数组就给它前三个位置0,1,2赋了初值‘S’,'T','R',那么其余位置就是默认为0,这个0在字符数组中以'\0'展现,如果是整型数组,则以0展现。以字符数组名输出字符串是以该数组首元素开始,直到遇到\0就结束输出。
所以你要的答案是:name数组中最后存储的是['S','T','#','\0','\0','\0','\0','\0','\0','\0',]

\0的asciii就是0,但是这个字符输出看不见的

文章:计算机二级C语言知识点总结 中也许有你想要的答案,请看下吧