关于为什么输出字符串的时候不加* ???
#include <stdio.h>int main()
{
char *p1 = {
"让编程改变世界 -- 鱼C工作室",
"Just do it -- NIKE",
"一切皆有可能 -- 李宁",
"永不止步 -- 安踏",
"One more thing... -- 苹果"
};
int i;
for (i = 0; i < 5; i++)
{
printf("%s\n", p1);
}
return 0;
}
例如这里我感觉应该是printf("%s\n",*p1);
这个问题困扰我好久了,求大佬解答。{:5_109:} {:10_312:} 本帖最后由 jackz007 于 2019-1-28 22:20 编辑
#include <stdio.h>
int main()
{
char * p1 = {
"让编程改变世界 -- 鱼C工作室" ,
"Just do it -- NIKE" ,
"一切皆有可能 -- 李宁" ,
"永不止步 -- 安踏" ,
"One more thing... -- 苹果"
} ;
int i ;
for (i = 0 ; i < 5 ; i ++) printf("%s\n" , p1) ;
}
p[] 是个指向字符型数据的指针数组,含有5个元素,分别指向 5 个字符串的起始地址,而语句
printf("%s\n" , p1) ;
所要求的变量是要显示的字符串首地址,正好对应于指针数组里面的 5 个元素,所以,不需要在 p1[] 前面加上 * 号。如果加上 * 那么表示的就是字符串里的首字符,而不是字符串的首地址了。 原因就是字符串在c语言中是用字符数组表示的,而数组名就表示数组的地址,所以直接用数组名就是相当于其他数据类型加了*的 printf 中用 %s 输出的类型对象是什么?
是不是指针?
是的话没问题了。定义的就是指针数组,每一项都是指针,你输出哪一句就给哪一句的指针
页:
[1]