怎样正确使用字符数组
1个回答
展开全部
C语言没有专门定义字符串数据类型(如其他语言中的string),它用以'\0'结尾的字符数组来表示一个逻辑意义上的字符串。
字符数组主要有两种用途,(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];
str = "abc"; //错误
正解的赋值办法是给数组元素逐个赋字符值,最后人为加'\0'。
字符数组主要有两种用途,(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];
str = "abc"; //错误
正解的赋值办法是给数组元素逐个赋字符值,最后人为加'\0'。
参考资料: http://hi.baidu.com/ayongs/blog/item/97783bd38d60cb033bf3cf77.html
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询