【发布时间】:2021-12-05 16:52:39
【问题描述】:
我有以下代码:
static char *name[] = {
"January",
"February",
"March",
};
printf("%s", name[0]);
当我用name[0] 传递printf 时,它会打印January。但它不应该打印一月份的address,因为上面的数组存储了一月份的pointer?
【问题讨论】:
-
printf的%s格式需要一个指针。您的name数组是一个指针数组。所以name[0]是一个指针,大家都很开心。 (更具体地说,%s想要,name[0]是一个指向char的指针,它指向一个有效的、以 null 结尾的字符串的开头。) -
如果要地址,请使用
%p。 -
请参阅this recent question 了解一些可能相关的信息。
-
name[0]存储指向char的不可修改匿名数组的第一个字符的指针,即字符串文字"January"。
标签: arrays c pointers printf c-strings