字符数组与字符指针

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

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

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

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

  1. #include <stdio.h>
  2.  
  3. int main(){
  4. char str1[] = "C Language";
  5. char *str2 = "C Language";
  6. str1[1] = '-';
  7. *(str2+1) = '-'; //错!不能改变字符串常量的值
  8. printf("str1 = %s\n", str1);
  9.  
  10. return 0;
  11. }
#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"};

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

posted on 2015-11-09 20:07  acodewarrior  阅读(160)  评论(0编辑  收藏  举报

导航