关于C语言中指向由m个元素组成的一维数组的指针变量

#include<stdio.h>intmain(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int*p;inti,j;p... #include<stdio.h>
int main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
int i,j;
p=a;
scanf("%d%d",&i,&j);
printf("a[%d,%d]=%d\n",i,j,*((p+i)+j));
return 0;
}

#include<stdio.h>
int main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4];
int i,j;
p=a;
scanf("%d%d",&i,&j);
printf("a[%d,%d]=%d\n",i,j,*((p+i)+j));
return 0;
}
两段代码如上 输出结果是一样的
我想问的是 指向由m个元素组成的一维数组的指针变量到底有什么用
因为如第一段代码 把a赋给p a是第一行的地址 那么p就已经是指向第一行的了
为什么还要用指向一维数组的指针变量
展开
 我来答
草原上之狼
高粉答主

2018-11-11 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.9万
采纳率:93%
帮助的人:3945万
展开全部
二维数组也是“数组的数组”所以定义一个指向由m个元素组成的一维数组指针即可指向二维数组的首元素地址。

如:
char arr[2][2] = { { 'a', 'b' }, { 'c', 'd' } };
char (*p)[2];
p=arr; // p指向首元素地址。
char c = *(p[0]+ 1);// 指向0行1列 即字符b
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式