注册 登录
编程论坛 C++教室

int *p[4]有啥用

a14290719 发布于 2011-11-29 12:55, 826 次点击
int a[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}};
    int (*p1)[4]=a;
    int *p[4];  这个*p[4] 怎么用   怎么给他赋值
4 回复
#2
lijunbo2011-11-30 02:21
以下是引用a14290719在2011-11-29 12:55:08的发言:

int a[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}};
    int (*p1)[4]=a;
    int *p[4];  这个*p[4] 怎么用   怎么给他赋值

int *p[4] 这是一个数组定义式,共4个元素,每个元素的类型都是int *型(即数组的元素是指向int的指针)
注意:int (*p)[4] 是一个指针定义,这个指针指向的是一个由4个元素(int型)组成的数组。
我当时也在这个概念上纠结了很久。
其实只要理解下标操作符具有高优先级,一切都容易明白了


[ 本帖最后由 lijunbo 于 2011-11-30 02:25 编辑 ]
#3
rjsp2011-11-30 08:20
    int a[3][4] = { {1,2,3,4}, {1,2,3,4}, {1,2,3,4} };

    int (*p1)[4] = a;

    int* p2[3] = { a[0], a[1], a[2] };
#4
我是菜鸟C2011-11-30 09:01
int a[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}};
    int (*p1)[4]=a;//这个是数组指针,他的类型为int(*)【4】,每个指针指向二维数组的一排!
    int *p[4];  //这个为指针数组,包括四个指针,*p[0],*p[1],*p[2],*p[3],其类型为int *【4】,每个指针指向一个元素,这里不能用来初始化,因为这个指针只是指向一维数组的指针,而实参为二维数组,除非你先转换。这种一维数组指针常常用来指向字符串!!!
#5
梦ambious2011-11-30 17:20
int *p[4]这是在声明一个指针数组,还没有初始化,要先初始化了才能用,而如果是int *p1[4],你前面用的是二维数组,所以后面也应该用int*p[][]类型,然后就像二维数组那样用就行了
1