十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
C语言中没有字符串类型的变量。
创新互联建站专注于企业营销型网站建设、网站重做改版、临海网站定制设计、自适应品牌网站建设、HTML5建站、成都做商城网站、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为临海等各大城市提供网站开发制作服务。
他只有字符变量类型char,所以字符串用变通的方式来表示。
第一是字符数组来表示字符串。用下面的语句声明:
char a[10];
C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符'\0',而字符数组不需要。
如刚才声明的a[10]是一个含有10个元素的字符数组,它也能存放含有9个元素的字符串。
第二种方式是直接用指针。语句是:
char *a;
用指针声明的字符数组,大多数功能与字符数组表示字符串相同。但也有以下两点不同,一是储存位置不同,用字符数组表示时,字符串是存放在储存器的变量区域内;而用指针表示的字符数组是存储在储存器的常量区内;第二个区别是字符数组的字符串可以更改,而指针表示的字符串不能更改。
有关字符串的赋值方法,如何引用,请参考相关书籍。
有什么问题请留言。
字符串的定义 末尾要有一个空字符'\0'
char name[15] = { 'w','a','n','g','l','i','\0'};
或
char name[15] = "wangli";
编译器会自动添加空字符
对于字符串的复制 函数为 strcpy()
语法为: strcpy (dest,src)
dest是目标字符串
src 是源字符串
简单说一下:
字符串数组是用来存放字符串的数组,在内存中占一段连续的单元。所占内存存放的是字符串。定义方法为:char a[N];N为常量表达式,可初始化。字符指针是指向字符的指针,所占内存单元存放的是所指字符的内存单元。定义方法为:char *p;
完整的解答:
1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的地址(字符串第一个字符的地址),决不是将字符串放到字符指针变量中
2)赋值方式
对于字符数组只能对各个元素赋值,不能用以下办法对字符数组赋值:
char str[14];
str = "I love you!";
而对于字符指针变量,可采用如下赋值:
char *a;
a = "I love you!";
赋值给a的是字符串第一个元素的地址
3)对字符指针赋初值
char *a = "I love you!";
等价于
char *a;
a = "I love you!";
而对数组的初始化:
char str[14] = {"I love you!"};
不等价于
char str[14];
str = "I love you!";
4)如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个字符变量的地址
char *a, str[10];
a = str;
scanf("%s", a);
先使a有确定值,即使a指向一个数组的首元素,然后输入一个字符串,把它存放在以该地址开始的若干单元中
5)指针变量的值是可以改变的,而数组名是常量
6)用指针变量指向一个格式字符串,可以用它代替printf函数的格式字符串
char * format;
fomat = "a = %d, b = %f\n"
printf(format, a, b);
相当于
printf("a = %d, b = %f\n", a, b);
因此只要改变printf所指向的字符串,就可以改变输入输出格式,这种printf函数称为可变格式输出函数
也可以用字符数组实现:
char format[];
format = "a = %d, b = %f\n"
可以看出,用指针变量指向字符串更简洁
参考资料:
前者定义的是指针,并且指向字符串常量“nihao”,后者是字符串数组。
区别在于,char * a = "nihao"的话,a指针本身是可以变化的,如a = "123",但对字符串常量进行操作是不行的,如,a[0] = '1'。
char a[] = "nihao"表示字符数组初始化为"nihao",a本身不可以变化的,如a = “123”,但a里面的元素可以变化