C++指针输出字符串前面为什么没有*

2025-03-02 03:39:37
推荐回答(4个)
回答1:

汗了,显然不应该加上*的
举个例子
char *s="abcd";
下面要输出s
printf("%s ",?);
?的地方应该写的是s,而不是*s;
字符串即数组,数组即指针
换言之,s本质上是个指向字符串"abcd"首地址的指针
想要输出整个字符串,只要给格式符号匹配一个首地址的指针就好了,就是这里的s
其实,*s的值是字符'a',也就是该字符串第一个字符
原因就是上面说的,s指向首地址,也就是a的地址,*s当然就是'a'了~

回答2:

char *a[2]={"hao","haoaho"};
声明里的星号,表示a是指针,*a[2]表示a是指针数组,数组有两个元素.

printf("%S \n %s",*a[1],*a[2]); -- 语法错。
应当写成:
printf("%s \n %s", a[0],a[1]);
%S -- 错, 要用小写 s
a[2] -- 下标超界,声明2个指针,只能用 a[0],a[1];

printf %s 参数 a[0],a[1] 是两个输出字符串的首地址。写成 *a[1],*a[2] 就不知道是什么了。

printf %c 参数 可以是 *a[0], *a[1],表示按ASCII值打印单个ASCII字符
printf("%c \n %c", *a[0], *a[1]);

回答3:

这可能是C++发明者当初认为字符指针使用比较频繁给它的特权吧,呵呵,其实没有必要知道为什么,知道怎么用就可以,这种情况只有字符串指针是特例

回答4:

"%s" 后面跟的是 Char*型变量