1 #include<stdio.h>
2
3 char str[]="Hello~world!";
4
5 char *ptr=str;//数组名只代表数组元素的首地址,即str[0]的地址,
6 //故此处也可以这样写: char *ptr=str[0];
7
8 void main()
9 {
10
11 //printf("%s",str);//能够将数组中元素正常显示出来
12
13
14 //printf("%s",*ptr);//程序会发生错误,因为指针ptr是指向数组首地址的,故*ptr即a[0]
15 //所以不能使用%s,要使用%c,这样就只能显示一个字符了
16
17 /* char i=0;
18 do{
19 printf("%c",*(str+i));
20 i++;
21 }
22 while(*(str+i));//这样写也是能实现功能的,因为数组名的实质就是一个指针常量,该指针常量是指向
23 //该数组元素的首地址的
24 */
25
26
27 /* do{
28 printf("%c",*(str++));
29 }
30 while(*(str++));
31 */
32 //以上这种写法是非常不正确的,因为什么呢?上一段代码中我们说过,数组名实质上就是一个指针常量,既然是常量的
33 //话就是不允许对其进行改变的,只能像上一段代码那样写。
34
35
36
37
38 /*do{
39 printf("%c",*ptr);
40 }
41 while(*(ptr++));*/
42 //这段代码是正确的,为什么呢?因为ptr是一个指针变量,而变量是允许被修改的
43
44 }