C语言 指针数组的使用 200

#include<stdio.h>#include<stdlib.h>intmain(){inta[3][2]={2,1,3,34,1,5},i,j;int*p[3];f... #include<stdio.h>
#include<stdlib.h>
int main()
{
int a[3][2] = { 2,1,3,34,1,5 }, i, j;
int *p[3];
for (i = 0;i < 3;i++)
p[i] = a[i];
for (i = 0;i < 3;i++)
for (j = 0;j < 2;j++)
printf("%6d", p[i][j]); \\为什么能用p[i][j]
getchar();
getchar();
return 0;
}
这是一个输出二维数组的程序;
*p[3]说明的应该是p是一个指针数组,它含有3个元素,然后到标示的地方,
明明这个是一个一维指针数组,怎么能表示成p[i][j]呢?
要是说*(p[i]+j)我能理解,这是a[i][0]的地址偏移了j*sizeof(int),但是这明明是一个一维的指针数组啊,怎么能用二维数组表示呢,不理解
展开
 我来答
一直很少提问的
2018-04-19 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:66
采纳率:50%
帮助的人:29万
展开全部

int **a可以表达一个二维数组。为什么呢?

你可以这么理解 * p[3]表达的是一个数组指针,这个指针 p[0]表示的是数组存的第一个地址。而数组实际上是一串连续地址的块。每一个小块存着一个内容。每次访问数组时,你为什么可以用数组名+下标访问呢? //比如a[i]; 

实际上就是 访问*a+i;   * 这个符号可以表示你存的是变量的地址。而数组地址的第一位为int类型变量存的地址(你可以直接使用数组的地址加上单位变量的空间的大小去访问下个元素)。在这个程序中int *p[3] 表示可以存三个int 类型的地址。而p正好把二维数组的三个一维数组的开头的int类型变量的地址给存起来了。

给你举个例子

我现在输出的是地址,是不是连续的?

用*运算符获取地址的内容。

实际上p[i]与 *(p+i)是表达的是同一个意思。只不过只有数组可以定义一个连续的空间

(数组的第一个地址是随机的其他的是连续的。)单独用指针的话会随机分配的

数组的指针可以存三个地址。当然可以访问二维数组了。

追问
你说的我都明白,数组的地址是连续的,

我的意思是,为什么我声明的是*p[3],但是后面可以用p[3][2],这不是违背了我的声明吗
创作者4TrQUCJWgB
2019-01-19 · TA获得超过3648个赞
知道大有可为答主
回答量:3114
采纳率:26%
帮助的人:177万
展开全部
char
*name[4];是一个指针数组,每个成员name[i]都是一个字符指针。
printf函数打印字符串时传的参数就是一个字符指针。
所有printf("%s",
name[4]);
--针对你的问题
printf(“%d”,
name[4]);打印出来的是一个字符串的地址信息。
printf("%d",
*name[4]);打印出来的是name[4]指针所指向的字符对象的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuanheng2000
2018-04-19 · TA获得超过108个赞
知道小有建树答主
回答量:194
采纳率:75%
帮助的人:86.6万
展开全部
P是指针数组,每个指针指向了A的二维起始地址p[i]=a[i];这里是赋值的地址,不是数据。p[0]就是a[0]地址,p[0][0]就是a[0][0]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忆怀灬
2018-04-19
知道答主
回答量:11
采纳率:0%
帮助的人:2.7万
展开全部
一维数组a[]:a=a[0]
二维数组a[2][2]的储存原理:
a[]储存各行第一个的地址,,a[0][n]的n为读取地址:a[0]+n*sizeof(int)的值。
*p[]:由于[]的优先级高于*,所以int *p[3]说明p是一个内含三个指针元素的数组,每个元素都指向int的指针。由于程序中p[i]=a[i],所以*p[0]=a[0][0]。(指向各数组的第一个)
p[0]与p[1]有p[0]指向的数组隔开。
而int (*p)[2]是说明p指向一个内含三个int类型值的数组。(这是指向一维数组)
备注是//...或/*...*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式