c语言字符串函数声明 c语言中字符串函数

c语言如何声明字符串

C语言中没有字符串类型的变量。

创新互联建站专注于企业营销型网站建设、网站重做改版、临海网站定制设计、自适应品牌网站建设、HTML5建站成都做商城网站、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为临海等各大城市提供网站开发制作服务。

他只有字符变量类型char,所以字符串用变通的方式来表示。

第一是字符数组来表示字符串。用下面的语句声明:

char a[10];

C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符'\0',而字符数组不需要。

如刚才声明的a[10]是一个含有10个元素的字符数组,它也能存放含有9个元素的字符串。

第二种方式是直接用指针。语句是:

char *a;

用指针声明的字符数组,大多数功能与字符数组表示字符串相同。但也有以下两点不同,一是储存位置不同,用字符数组表示时,字符串是存放在储存器的变量区域内;而用指针表示的字符数组是存储在储存器的常量区内;第二个区别是字符数组的字符串可以更改,而指针表示的字符串不能更改。

有关字符串的赋值方法,如何引用,请参考相关书籍。

有什么问题请留言。

C语言中字符串怎么声明?非要用字符串数组吗?

字符串的定义 末尾要有一个空字符'\0'

char name[15] = { 'w','a','n','g','l','i','\0'};

char name[15] = "wangli";

编译器会自动添加空字符

对于字符串的复制 函数为 strcpy()

语法为: strcpy (dest,src)

dest是目标字符串

src 是源字符串

C语言的字符串声明问题

简单说一下:

字符串数组是用来存放字符串的数组,在内存中占一段连续的单元。所占内存存放的是字符串。定义方法为: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"

可以看出,用指针变量指向字符串更简洁

参考资料:

C语言字符串声明

前者定义的是指针,并且指向字符串常量“nihao”,后者是字符串数组。

区别在于,char * a = "nihao"的话,a指针本身是可以变化的,如a = "123",但对字符串常量进行操作是不行的,如,a[0] = '1'。

char a[] = "nihao"表示字符数组初始化为"nihao",a本身不可以变化的,如a = “123”,但a里面的元素可以变化


分享文章:c语言字符串函数声明 c语言中字符串函数
分享地址:http://csdahua.cn/article/ddiidis.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流