首页 > 代码库 > 数组指针与指针数组

数组指针与指针数组

数组指针与指针数组都是数组的变形,看下面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();}