数组指针与指针数组都是数组的变形,看下面3个表示:
1> char a[6]=“123456”; 2> char * a[6]={“12”,“34”,“56”,“78”,“910”,“1011”}; 3> char(*a)[6]; char str[2][6]={"123456","234567"}; a=str;
1中a是一个数组,是一个包含6个char型元素的数组,a是数组名。
2中a是一个指针数组,首先它是一个数组。数组的元素是char型指针,这些指针指向字符串。
3中a是一个数组指针,首先它是一个指针,a指针指向长度为6的char型数组。
可以这么理解:
1和2对比,相当于把 char 用char * 替换,本来a里面放着的是char,现在放着char*。
1和3对比,相当于把 a换成*a,本来数组名是a,现在变成 *a,也就是一个指针了。
是数组指针还是指针数组,关键看是a被替换了,还是char被替换了。a被替换了就变成指针,数组指针。char被替换了还是数组,只是放指针的数组。
下面是一些代码:
#include<iostream> using namespace std; int main(void) { char str[100]="I Love China!"; cout<<"数组str:"<<str<<endl; char* a[3]={"I","Love","China!"};//指针数组,是一个数组,但是数组里面放的是指向char的指针 cout<<"指针数组a是:"; for(int i=0;i<3;i++) { cout<<a[i]<<" "; } cout<<endl; cout<<"数组指针指向的数组是:"; char (*p)[6];//数组指针,是一个指针,指向长度为6的数组 char s2[3][6]={"I","Love","china"}; p=s2; for(int i=0;i<3;i++) { cout<<p[i]<<" "; } cout<<endl; getchar(); }