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 }