指针—学习cc++的第一步(第五章)

指针—学习cc++的第一步(第五章),第1张

指针—学习cc++的第一步(第五章),第2张

第五章。数组和指针的关系

如果对声明数组的语句不太明白的话,请参阅我前段时间贴出的文章<<如何理解c和c++的复杂类型声明>>。 数组的数组名其实可以看作一个指针。看下例:

例八: 

int array[10]={0,1,2,3,4,5,6,7,8,9},value; 

... 

... 

value=array[0];//也可写成:value=*array; 

value=array[3];//也可写成:value=*(array+3); 

value=array[4];//也可写成:value=*(array+4); 

上例中,一般而言数组名array代表数组本身,类型是int [10],但如果把array看做指针的话,它指向数组的第0个单元,类型是int *,所指向的类型是数组单元的类型即int。因此*array等于0就一点也不奇怪了。同理,array+3是一个指向数组第3个单元的指针,所以*(array+3)等于3。其它依此类推。

例九: 

char *str[3]={ 

"Hello,this is a sample!", 

"Hi,good morning.", 

"Hello world" 

}; 

char s[80]; 

strcpy(s,str[0]);//也可写成strcpy(s,*str); 

strcpy(s,str[1]);//也可写成strcpy(s,*(str+1)); 

strcpy(s,str[2]);//也可写成strcpy(s,*(str+2)); 

上例中,str是一个三单元的数组,该数组的每个单元都是一个指针,这些指针各指向一个字符串。把指针数组名str当作一个指针的话,它指向数组的第0号单元,它的类型是char**,它指向的类型是char *。


*str也是一个指针,它的类型是char*,它所指向的类型是char,它指向的地址是字符串"Hello,this isa sample!"的第一个字符的地址,即'H'的地址。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 指针—学习cc++的第一步(第五章)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情