到底使用字符数组还是字符串常量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了到底使用字符数组还是字符串常量相关的知识,希望对你有一定的参考价值。
在c语言中有两种表示字符串的方法,一种是字符数组,一种是字符串常量
在编程过程中如果只涉及到对字符串的读取,那么字符数组和字符串常量都能够满足要求;如果有写入(修改)操作,那么只能使用字符数组,不能使用字符串常量。
字符串数组与字符串常量之间的区别:
最根本的区别是在内存中的存储区域不一样,字符数组存储在全局数据区或栈区,第二种形式的字符串存储在常量区。全局数据区和栈区的字符串(也包括其他数据)有读取和写入的权限,而常量区的字符串(也包括其他数据)只有读取权限,没有写入权限。
下面的例子演示了如何输出这种字符串:
- #include <stdio.h>
- int main(){
- char *str = "http://c.biancheng.net";
- int len = strlen(str), i;
- ?
- //直接输出字符串
- printf("%s\n", str);
- //使用*(str+i)即为字符串数组
- for(i=0; i<len; i++){
- printf("%c", *(str+i));
- }
- printf("\n");
- //使用str[i]即为字符串常量
- for(i=0; i<len; i++){
- printf("%c", str[i]);
- }
- printf("\n");
- ?
- 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\n", str);
- ?
- return 0;
- }
运行结果:
C C++ Java Python javascript
C C++ Java Python JavaScript
以上是关于到底使用字符数组还是字符串常量的主要内容,如果未能解决你的问题,请参考以下文章
请问一下在c++中,字符串比较时如==,!=,<,>,>=这些关系运算符到底比较的是字符串的什么?长度,还是ASSIC