int a[2][2]={{1,2},{3,4}},那*(a+1)代表什么?
14个回答
展开全部
非常简单!
*(a+1)相当于a[1],它是一个int [2]的数组!
说它是第二行的首地址,不是很准确,因为没有说明它的类型。
你可以说a是数组a[2][2]的首地址,但地址表示不了数组。
*(a+1)相当于a[1],它是一个int [2]的数组!
说它是第二行的首地址,不是很准确,因为没有说明它的类型。
你可以说a是数组a[2][2]的首地址,但地址表示不了数组。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的都在乱说,a[2][2]是一个二维数组,而指针a存储的是数组{1,2}和{3,4}的起始地址指针,可以说是"指针的指针",所以*(a+1)得到的是第二个数组,也就是{3,4}的起始地址,*(*(a+1))才等于3,其实楼主可以自己用C++调试,查看内存的分配的,就明白了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*(a+1)={3,4}
是一维数组,错不了的
如果说代表什么的话,应该是“数组a的首地址加上2*sizeof(int),这个地址所对应的一维数组”
是一维数组,错不了的
如果说代表什么的话,应该是“数组a的首地址加上2*sizeof(int),这个地址所对应的一维数组”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//实践一下,基于WEN TC
//测试*(a+i)
#include<stdio.h>
int a[2][2]={{1,2},{3,4}};
void main(void)
{
unsigned int i;
for(i=0; i<4; i++)
{
printf("%d\n",*(a+i));
}
getch();
}
/*
打印结果为
404
408
412
416
一看就知道是地址
*/
//测试*(*(a+0)) 、*(*(a+0)+1) 、*(*(a+1)+0) 、*(*(a+1)+1)
#include<stdio.h>
int a[2][2]={{1,2},{3,4}};
void main(void)
{
printf("%d\n%d\n%d\n%d\n",*(*(a+0)),*(*(a+0)+1),*(*(a+1)+0),*(*(a+1)+1));
}
/*
打印结果为
1
2
3
4
结果正确,说明
指针a存储的是数组{1,2}和{3,4}的起始地址指针,可以说是"指针的指针"
*/
int a[2][2]={{1,2},{3,4}},那*(a+1)代表什么?
回答:
*(a+1)代表第二行元素{3,4}的首地址,*(*(a+1))等于3
//测试*(a+i)
#include<stdio.h>
int a[2][2]={{1,2},{3,4}};
void main(void)
{
unsigned int i;
for(i=0; i<4; i++)
{
printf("%d\n",*(a+i));
}
getch();
}
/*
打印结果为
404
408
412
416
一看就知道是地址
*/
//测试*(*(a+0)) 、*(*(a+0)+1) 、*(*(a+1)+0) 、*(*(a+1)+1)
#include<stdio.h>
int a[2][2]={{1,2},{3,4}};
void main(void)
{
printf("%d\n%d\n%d\n%d\n",*(*(a+0)),*(*(a+0)+1),*(*(a+1)+0),*(*(a+1)+1));
}
/*
打印结果为
1
2
3
4
结果正确,说明
指针a存储的是数组{1,2}和{3,4}的起始地址指针,可以说是"指针的指针"
*/
int a[2][2]={{1,2},{3,4}},那*(a+1)代表什么?
回答:
*(a+1)代表第二行元素{3,4}的首地址,*(*(a+1))等于3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询