码迷,mamicode.com
首页 > 编程语言 > 详细

字符数组与字符指针

时间:2015-11-09 20:54:13      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

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

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"};

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

字符数组与字符指针

标签:

原文地址:http://www.cnblogs.com/wgang171412/p/4950935.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!