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

大家对int(*p)[2]的解释都蛮透彻,谢谢了。只是想大家帮我比较一下int(*p)[2]与int*p[2]的具体区别,最好详细点加追加5分... 大家对int (*p)[2]的解释都蛮透彻,谢谢了。只是想大家帮我比较一下int (*p)[2]与int *p[2]的具体区别,最好详细点加追加5分 展开
 我来答
百度网友6a01b05f7
推荐于2018-03-11
知道答主
回答量:11
采纳率:0%
帮助的人:17.7万
展开全部
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>
天云小店
推荐于2016-09-12 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:749万
展开全部
二维数组指针变量形式如下:

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

int (*p)[2]表示定义一个数组指针,只是是一个一维的数组指针,数组中每个元素(共2个元素)都是一个int类型的指针变量,指针指向的地址就需要后续程序给出,不然会变为野指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiwending2008
2011-10-12 · TA获得超过102个赞
知道答主
回答量:115
采纳率:0%
帮助的人:140万
展开全部
int *p[2]: 指针数组,首先它是一个数组,数组的元素都是指针(int *),数组占多少个字节由数组本身决定.它是"存储指针的数组"的简称;
int (*p)[2]: 数组指针.首先它是一个指针,指向一个数组,在32为系统下永远占4个字节,它是"指向数组的指针"的简称;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
直说职话
2011-10-12
知道答主
回答量:30
采纳率:0%
帮助的人:29万
展开全部
(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分吧,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-10-11
展开全部
二维数组指针变量: 指向一个二维数组的的指针。
int (*p)[2]:一个含有两个 指向int 型数据 的指针元素的i数组.
追问
大家对int (*p)[2]的解释都蛮透彻,谢谢了。只是想大家帮我比较一下int (*p)[2]与int *p[2]的具体区别,最好详细点加追加5分
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式