2015.8.5数组与指针练习总结

 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 }

 

posted @ 2015-08-06 20:05  玩呀熊熊  阅读(161)  评论(0编辑  收藏  举报