【发布时间】:2020-03-08 19:11:19
【问题描述】:
我已经使用以下字符串创建并初始化了一个数组:
char print_names[][10] = {"\t\t1. John\n",
"\t\t2. Smith\n",
"\t\t3. Jane\n",
"\t\t4. Mary\n",
"\t\t5. Lisa\n"};
据我所知,数组名本身就是一个指针。所以当我把这些行:
printf("%c", *print_names[0]);
printf("%c", *print_names[1]);
它应该指向那个数组元素的内容。但是控制台上什么也没有打印出来。
我进入调试器,它清楚地表明每个元素都包含适当的字符串。我不确定我在哪里做错了。
编辑:我还在学习有关数组和指针的基础知识,所以我没有在文件中包含<string.h>。
附加问题:是否可以在不使用字符串的情况下打印内容(名称)?
好的。我想到了。我想我现在明白了。感谢您的回答。
【问题讨论】:
-
1)
*print_combos[0]的 type 是什么(它与print_combos[0]有何不同)? 2) "%c" 的用途是什么(它与 "%s" 有何不同以及各自期望的类型)? -
为字符串指定的格式是
%s,而不是%c。 -
对不起,我回去将 print_combos 更改为 print_names。这是一个错字。
-
变量叫什么并不重要 - 编辑后类型/范围/用法仍然相同。
-
小心字符串,数组中的一个字符串(如您所展示的那样)将 not 以 null 结尾,因此将其视为以 null 结尾字符串(如以
%s格式打印)将导致未定义行为。最好将数组的大小从10增加到更大。