/**
* 经常会弄错字符指针变量和字符数组的使用方式
* 写在这里方便查阅 :
*
* (1)内容不同:
* 字符数组由若干个元素组成,每个元素放一个字符。
* 而字符指针变量中存放的是地址(字符串第一个字符的地址),决不是将字符串放到字符指针变量中。
*
* (2)赋值方式:
* 对字符数组只能对各个元素赋值,不能用以下方法:
* char str[14];
* str="I love China!";//************错误的赋值方式!**************
* 而对字符指针变量,可以用以下方法:
* char *a;
* a="I love China!";//***赋给a的不是字符,是字符串的第一个元素***
*
* (3) 初始化:
* 对数组的初始化:--数组可以在定义时整体赋初值,但不能在赋值语句中整体赋值
* char str[14]={"I love China!"};
* 不等价于
* char str[14];
* str[]="I love China!";
* 对字符指针变量赋初值:
* char *a="I love China!";
* 等价于
* char *a;
* a="I love China!";
*
* (4) 地址分配:
* 如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址 。
*
* 而定义一个字符指针变量时 ,给指针变量分配内存单元,在其中可以放一个
* 字符变量的地址, 但如果未对它赋予一个地址值,则它并未具体指向一个确定的
* 字符数据。
* 例如:
* char str[10];
* scanf("%s",str);//正确
*
* char *a;
* scanf("%s",a);//错误!!!a的地址是不可预料的
* 改正:
* char *a,str[10];
* a=str;
* scanf("%s",a);
* 先使a有确定的值,也就是使a指向一个数组的首元素,然后输入一个字符串,
* 把它存放在以该地址开始的若干单元中。
*
* (5)指针变量的值是可以改变的
* 指针变量的值可以改变
* char *a="I love China!";
* a=a+7;
* printf("%s",a);//输出:China!
*
* 数组名虽然代表地址,但它是常量,它的值是不能改变的
* char str[]={"I love China!"};
* str=str+7;//[Error]incompatible types in assignment of 'char*'to 'char[14]'
* printf("%s",str);
*/