在c语言中有两种表示字符串的方法,一种是字符数组,一种是字符串常量
在编程过程中如果只涉及到对字符串的读取,那么字符数组和字符串常量都能够满足要求;如果有写入(修改)操作,那么只能使用字符数组,不能使用字符串常量。
字符串数组与字符串常量之间的区别:
最根本的区别是在内存中的存储区域不一样,字符数组存储在全局数据区或栈区,第二种形式的字符串存储在常量区。全局数据区和栈区的字符串(也包括其他数据)有读取和写入的权限,而常量区的字符串(也包括其他数据)只有读取权限,没有写入权限。
下面的例子演示了如何输出这种字符串:
- #include <stdio.h>
- int main(){
- char *str = "http://c.biancheng.net";
- int len = strlen(str), i;
- //直接输出字符串
- printf("%s ", str);
- //使用*(str+i)即为字符串数组
- for(i=0; i<len; i++){
- printf("%c", *(str+i));
- }
- printf(" ");
- //使用str[i]即为字符串常量
- for(i=0; i<len; i++){
- printf("%c", str[i]);
- }
- printf(" ");
- return 0;
- }
运行结果:
http://c.biancheng.net
http://c.biancheng.net
http://c.biancheng.net
获取用户输入的字符串就是一个典型的写入操作,只能使用字符数组,不能使用字符串常量,请看下面的代码: - #include <stdio.h>
- int main(){
- char str[30];
- gets(str);
- printf("%s ", str);
- return 0;
- }
运行结果:
C C++ Java Python JavaScript
C C++ Java Python JavaScript