C';s空字符,参考“的Ex.9”;“艰苦学习C”;
我正在努力学习C的Ex.9: 我有几个问题:C';s空字符,参考“的Ex.9”;“艰苦学习C”;,c,arrays,string,C,Arrays,String,我正在努力学习C的Ex.9: 我有几个问题: 当字符名是逐字符指定的(在“//setup the name”注释下)时,为什么必须手动输入空字符,而在使用方法char*other=“Zed”时则不能?我们为什么不输入char*other=“Zed\0” 关于注释“//first”下的代码,请将它们原样打印出来”——他说整数数组和数字数组在第一个字符后都用0填充(因为每个数组只指定一个字符)。那么,为什么当他打印这些数组时,整数数组显示0,而字符数组只显示一个单独的a,而不是0 当他设置数字数组时
int
s的数组int arrayname[count of elements]
)不需要终止符,所以程序员必须采取措施避免访问数组超出范围字符串literal
“a”
表示字符数组{'a','\0'}
。如果你有三个问题,你能问三个问题吗?也要以一种不依赖版权作品的方式重新组织它们。在StackOverflow上,如果问题中出现被评论的源代码,则最好是这样,但可能不允许将此源代码复制并粘贴到此处用于商业作品。请尝试将其放入“用你自己的话来说"每个问题问一个问题。这个问题似乎离题了,因为它不包含相关的内联代码。对不起,我以后会记住这一点。没有字符NULL
,这是空指针常量。你可能是说NUL
?Sry,是的,我做了-更新。什么是数组文字?文字I这是一个写入程序代码的值。数组文字是在代码中编写的数组,例如int xs[]={1,2,3}
;文字部分是{1,2,3}部分.Sry,但这是错误的。您可能需要阅读一些标准来(取消)混淆术语。C没有数组文字。{1,2,3}
是由整型常量的初始值设定项列表组成的初始值设定项。@伊曼纽尔:这被称为“数组初始值设定项”。数组文字可能与复合文字混淆(例如,C99/C11中的任意无意义数组)。谢谢,让我检查一下我是否真正理解(2)。您的意思是,int数组在打印时的结果为0,因为0被视为整数(与字符串相反,因此不以0结尾),但char数组在打印时被解释为字符串,因此前一个0将其终止,结果仅为“a”?@intelli78:这就是为什么name
显示为一个a
。正如St0fF所说,之所以name每个只显示一个a
,是因为NUL(ascii值为0的字符)不可打印。