在C语言中如何使用字符串,字符数组与字符串的详细分析。
1个回答
展开全部
字符数组主要有两种用途,(1)存储字符串,(2)存储字符或字符变量。这两个是不同的,刚开始接触时很容易混淆。下面进一步分析这两者的不同。
首先初始化时不同,
用于存储字符串,例如:char
str[]="Hello";
用于存储字符或字符变量,例如:char
Chars[]={`H``e`,`1``1`,`o`}。这两者的存储方式是一样的,但是存储内容稍微有所不同,那就是第一种情况会在结尾加上‘\0’,存储情况类似于{`H``e`,`1``1`,`o`,`\0`},存储空间会比第二种情况大一点,但是这个存在空间并不被计算进字符串(其实只是字符数组)变量中。
C语言中提供的字符串操作函数其实是针对于结尾是`\0`的字符数组进行的。输出函数printf中的输出参数%s也是针对于结尾是`\0`的字符数组。
另外,还有一种方法可以定义字符串(其实也是字符数组),申明如下:
char * string = "this is a point
charArray.";字符指针指向字符数据的第一个字符的位置。
最后,有两点特别说明。
(1)字符串常量给出的是地址值。如
char *p, s[10];
p="hello";//正确
(2)不能用赋值语句给字符数组整体赋一串字符,例:
char str[10];
正解的赋值办法是给数组元素逐个赋字符值,最后人为加'\0'。
首先初始化时不同,
用于存储字符串,例如:char
str[]="Hello";
用于存储字符或字符变量,例如:char
Chars[]={`H``e`,`1``1`,`o`}。这两者的存储方式是一样的,但是存储内容稍微有所不同,那就是第一种情况会在结尾加上‘\0’,存储情况类似于{`H``e`,`1``1`,`o`,`\0`},存储空间会比第二种情况大一点,但是这个存在空间并不被计算进字符串(其实只是字符数组)变量中。
C语言中提供的字符串操作函数其实是针对于结尾是`\0`的字符数组进行的。输出函数printf中的输出参数%s也是针对于结尾是`\0`的字符数组。
另外,还有一种方法可以定义字符串(其实也是字符数组),申明如下:
char * string = "this is a point
charArray.";字符指针指向字符数据的第一个字符的位置。
最后,有两点特别说明。
(1)字符串常量给出的是地址值。如
char *p, s[10];
p="hello";//正确
(2)不能用赋值语句给字符数组整体赋一串字符,例:
char str[10];
正解的赋值办法是给数组元素逐个赋字符值,最后人为加'\0'。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询