C语言为什么打印字符串需要在变量前加个*号

#include<stdio.h>

int main()
{
char *x="abc"; /*为什么在X前面需要*号*/
printf("%s",x); /*为什么这里是%S不是%C么?*/

return 0;
}
我把那个*去掉了,程序就错误了。

char是字符,char* 是指向字符的指针,当然也可以指向字符串(就是一串字符)。
char x=‘a’,x本身存储的就是字符,char *x=‘abc’,x只是一个地址(就像门牌号一样的地址),指向存放‘abc’的地方。是2个数据类型。
现在你知道为什么去掉*就完全错了吧。
%c打印的是char,%s打印的是string。至于穿进去什么那就是规定了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-12
c语言本身没有设置一种类型来定义字符串变量,字符串的存储完全依赖字符数组
但是c++里包含头文件
#include
"string"
可以使用string类
操作起来比字符数组方便很多
#include
"string.h"
比起上面那个多一个.h
这个头文件是c语言的头文件
里面有常用的有关字符串的函数
比如strcmp字符串比较
strcat字符串拼接
但是它们操作的还是字符数组
第2个回答  2015-05-15
char是字符,char* 是指向字符的指针,当然也可以指向字符串(就是一串字符)。
char x=‘a’,x本身存储的就是字符,char *x=‘abc’,x只是一个地址(就像门牌号一样的地址),指向存放‘abc’的地方。是2个数据类型。
现在你知道为什么去掉*就完全错了吧。
%c打印的是char,%s打印的是string。至于穿进去什么那就是规定了
第3个回答  2009-12-28
char *x="abc"; 这里的*是指出x是一个指向字符型数据的指针变量,用来存储字符型数据的地址,如这个语句就是把字符串"abc"所在的地址赋予指针变量x。
如果去掉*,x就变成一个字符型变量了,它只能存储字符型的数据如'a'(注意字符用单引号,字符串用双引号)。

指针是一个难点
第4个回答  2009-12-28
加*是因为 x是指针(也就是存放"abc"的地址) *x表示去这个指针的内容
%s表示输出字符串 %c表示输出字符
相似回答