我有下面的代码:
static char *name[] = {
"January",
"February",
"March",
};
printf("%s", name[0]);
当我传递printf与name[0]
时,它打印January
。但是它不应该打印1月的address
吗?因为上面的数组存储了1月的pointer
。
转换说明符%s
将相应的实参解释为指向字符串的第一个字符的指针,直到遇到结束的零字符' '
。
如果你想输出指针本身,那么你应该写
printf( "%p", ( void * )name[0] );
注意这个声明
static char *name[] = {
"January",
"February",
"March",
};
作为初始化项的字符串字面值被隐式转换为指向其首字符的指针,这些指针存储在数组name
中。