本帖最后由 葡萄糖雅雅雅 于 2017-1-30 11:31 编辑
1、字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第一个字符的地址),绝不是将字符串放到字符指针变量中
2、赋值方式:对字符数组只能对各个元素赋值,不能用以下办法对字符数组赋值。 char a[10]; a= " chai ke ya "; 而对字符指针变量,可以采用下面方法赋值: char *a; a= " chai ke ya "; 但注意赋给a的不是字符,而是字符串元素的第一个地址。
3、对字符指针变量赋初值: char *a = " chai ke ya "; 等价于 char *a; a = " chai ke ya "; 而对数组的初始化: char a[10]={"chaikeya"}; 不等价于 char a[10]; a[]="chaikeya";
4、如果定义了一个字符数组,在编译时为他分配内存单元,他有确定的地址。 而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个字符变量的地址,也就是说,该字符变量可以指向一个字符型数据,但如果未对他赋予一个地址值,则他并未具体指向一个确定的字符数据。 eg:char a[10]; scanf("%s",a); 用指针eg:char *a; scanf("%s",a);()
5、指针变量的值是可以改变的 eg;#include <stdio.h>
void main() { char*a = "chai ke ya "; printf("%s\n",a);
a+=5; printf("%s\n",a); }
另:若定义了一个指针变量,并使它指向一个字符串,就可以用下标形式引用指针变量所指的字符串中的字符
|