数组指针与指针数组

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

 

posted @ 2014-07-12 10:23  北门吹风  阅读(237)  评论(0编辑  收藏  举报