您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言字符串指针与字符数组的区别

时间:01-26来源:作者:点击数:

用字符数组和字符串指针都可实现字符串的存储和运算,但是两者是有区别的。

1) 字符数组是一个数组,每个元素的值都可以改变。而字符串指针指向的是一个常量字符串,它被存放在程序的静态数据区,一旦定义就不能改变。这是最重要的区别。

关于静态存储区的概念请查看:C语言内存模型(内存组织方式)

下面的代码在运行期间将会出错:

#include <stdio.h>
int main(){
    char str1[] = "C Language";
    char *str2 = "C Language";
    str1[1] = '-';
    *(str2+1) = '-';  //错!不能改变字符串常量的值
    printf("str1 = %s\n", str1);
    return 0;
}

2) 对字符串指针方式:

char *ps="C Language";

可以写为:

char *ps;
ps="C Language";

而对数组方式:

char st[]={"C Language"};

不能写为:

char st[20];
st={"C Language"};

只能对字符数组的各元素逐个赋值。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门