字符指针和字符数组

Posted Howie_Tang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符指针和字符数组相关的知识,希望对你有一定的参考价值。

2017年12月19日17:12:10
字符指针和字符数组的整理
 
1.
字符数组是由若干个元素组成,每个元素中存放的是一个字符,而字符指针变量中存放的是第一个字符的地址

 

2.
char * a;a = "I love China";指针变量可以赋值,但是数组名不可以这样赋值。
char a[12]; a[0]=‘I‘;合法的。 a = "I love China";//不合法!!!

 

3.char *p = "I love China";//定义指针变量p,并且指向第一个元素I的地址。
 等价于:char * a;a = "I love china!";
  但是数组:
   char str[14]="I love China!";
 不等价于char str[14];str[]="I love China"; //报错!!!!

 

4.字符数组分配若干个存储单元,但是指针变量值分配一个存储单元。

 

5.指针变量的值是可以改变的,而数组名代表一个固定的值(数组首元素的地址),不能改变。
 eg: char *a = "I love China";
  a = a+7;//正确,指向C的地址
  char str[]={"I love China"};
  str = str+7;//报错!!!
  

6.字符数组中的各元素的值是可以改变的(可以对他们再赋值),但字符指针变量指向的字符串常量中的
 内容是不可以被取代的(不能再对它进行赋值)。
 char a[] ="House";
 char * b="House";
 a[2] = ‘r‘;//合法,r取代a数组元素中a[2]的原值u
 b[2]=‘r‘;//非法,字符串常量是不能改变的
 

7.用指针变量指向的一个格式字符串,可以用它代替printf函数中的格式字符串。
 char * format;
 format = "a = %d,b=%f\n";//等价于:char format[]="a=%d,b=%f\n";
 printf("format,a,b");
 注意:定义数组时初始化或逐个对元素赋值,而不能用赋值语句对数组整体赋值
  eg:char format[];
  format="a=%d,b=%d\n";

 

以上是关于字符指针和字符数组的主要内容,如果未能解决你的问题,请参考以下文章

字符指针和字符数组

指针系统学习5-对使用字符指针变量和字符数组的讨论

修改指向指针的数组中对应元素的字符出现异常,该如何解决?

对使用字符指针变量和字符数组的讨论

难道指针数组不能指向多个字符串吗?

复习一下整型数组,字符数组,整型指针数组,字符指针数组,整型数组指针,字符数组指针