C-我可以在不指定每个插槽大小的情况下制作2d数组吗?

时间:2019-01-16 20:14:05

标签: c

在我的作业中,我被要求编写一个程序,其中一部分是制作一个2d数组并为其添加10个名称。 现在他们没有指定每个名称的大小,现在我的问题是如何在不指定每个名称大小的情况下制作二维数组? char arr[10][?] = {0};

1 个答案:

答案 0 :(得分:1)

如果您还不了解指针,那么最简单的方法是Weather Vane建议确定名称的最大长度,并将其用于二维数组中的每个子数组。

您不需要“删除那些多余的空(或0)'slots'”,因为当您在c中编写字符串时,或者在将scanf或printf与字符串一起使用时,这些字符串均以空值结尾。这意味着当您将名称放入子数组时,该名称可能已经有一个空终止符(值为0)以表示字符串的结尾。当使用处理以null终止的字符串的函数时,将忽略该null终止之后的每个值。

例如。

char name[] = "Bob";

实际上等同于执行以下任一操作:

char name[] = { 'B', 'o', 'b', '\0'};  //'\0' is a null termination
char name[] = {0x42, 0x6F, 0x62, 0x0}; // ascii hex codes, '\0' translates to 0x0

(如果字符串以null终止并且您使用的函数知道该值,那么name []有多大都无关紧要)。 如果由于某种原因输入空终止符,则可以手动插入该终止符。