C语言二维数组指针变量是什么,int (*p)[2]什么意思

大家对int (*p)[2]的解释都蛮透彻,谢谢了。只是想大家帮我比较一下int (*p)[2]与int *p[2]的具体区别,最好详细点加追加5分

int (*p)[4]
定义了一个指针p,指向一个4个元素的数组。只是定义一个指针,
指向4个元素的数组

int *p[4]
定义了一个数组指针p[4],p的每个元素指向一个整型的数据。就
是数组里面保存的是指针
(1)int* p[2] 是一个指向int型的指针数组,即:p是包含两个元素的指针数组,指针指向的是int型。

可以这样来用:

#include <iostream.h>

void main() {

int* p[2];
int a[3] = {1, 2, 3};
int b[4] = {4, 5, 6, 7};
p[0] = a;
p[1] = b;
for(int i = 0; i < 3; i++) cout << *p[0] + i;// cout << **p + i;
cout << endl;
for(i = 0; i < 4; i++) cout << *p[1] + i;// cout << **p + i;

}

(2)对于 int (*p)[2], 它相当于一个二维数组的用法,只是它是一个n行2列的数组,可以这样来用:

#include <iostream.h>

void main() {

int (*p)[2];
int b[3][2] = {{1, 2}, {3, 4}, {5, 6}};
p = b;
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 2; j++) //cout << p[i][j]; //cout << *(*(p+i)+j);
cout << endl;
}
}
<回答者: lstno1bd>
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-09-12
二维数组指针变量形式如下:

类型名 (*数组名)[数组行数][数组列数]
如:int (*p)[2][3]; // 定义一个int类型的二维数组指针变量,数组中每个元素都是一个指针

int (*p)[2]表示定义一个数组指针,只是是一个一维的数组指针,数组中每个元素(共2个元素)都是一个int类型的指针变量,指针指向的地址就需要后续程序给出,不然会变为野指针
第2个回答  2011-10-12
int *p[2]: 指针数组,首先它是一个数组,数组的元素都是指针(int *),数组占多少个字节由数组本身决定.它是"存储指针的数组"的简称;
int (*p)[2]: 数组指针.首先它是一个指针,指向一个数组,在32为系统下永远占4个字节,它是"指向数组的指针"的简称;
第3个回答  2011-10-12
(1)int* p[2] 是一个指向int型的指针数组,即:p是包含两个元素的指针数组,指针指向的是int型。

可以这样来用:

#include <iostream.h>

void main() {

int* p[2];
int a[3] = {1, 2, 3};
int b[4] = {4, 5, 6, 7};
p[0] = a;
p[1] = b;
for(int i = 0; i < 3; i++) cout << *p[0] + i;// cout << **p + i;
cout << endl;
for(i = 0; i < 4; i++) cout << *p[1] + i;// cout << **p + i;

}

(2)对于 int (*p)[2], 它相当于一个二维数组的用法,只是它是一个n行2列的数组,可以这样来用:

#include <iostream.h>

void main() {

int (*p)[2];
int b[3][2] = {{1, 2}, {3, 4}, {5, 6}};
p = b;
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 2; j++) //cout << p[i][j]; //cout << *(*(p+i)+j);
cout << endl;
}
}追问

http://zhidao.baidu.com/question/329109002.html
你 的 回答我懂了,谢谢,很透,点击上面链接,回答任意数字,我给你25分吧,谢谢

第4个回答  2011-10-11
二维数组指针变量: 指向一个二维数组的的指针。
int (*p)[2]:一个含有两个 指向int 型数据 的指针元素的i数组.追问

大家对int (*p)[2]的解释都蛮透彻,谢谢了。只是想大家帮我比较一下int (*p)[2]与int *p[2]的具体区别,最好详细点加追加5分

相似回答