为什么在结果中*a输出的是a[3][2]的首地址?a是数组的a[3][2]首地址,为什么*a的值不是1?
a已经就是数组的首地址了,*a是对a取内容,为什么*a不是1,而是和a的值一样
追答a是二维数组的首地址,a[0]是第一行的一位数组的首地址, a 和a[0]是不相等的。a中存放的是a[0], a[0]中存放的是{1, 2}
追问a,a[0],&a[0][0]值是一样的
我用VS运行了
*a == a[0];
a == &a[0][0];
#include
main()
{
int a[3][2] = { 1,2,3,4,5,6 }, (*p)[2];
p = a;
printf("%d\n", a[0]);
printf("%d\n", &a[0][0]);
printf("%d\n",a);
printf("%d,%d",*a,*a[0]);
system("pause");
}
二级指针和一级指针是不可能相等的,哪怕值一样,它俩也是不同的变量类型。
这么说吧,二维数组的首地址与二维数组中第一行的首地址在内存中处于相同的位置,但是它们各自代表的含义不同。根本原因就是变量类型不一样
为什么呢?
追答因为是二维数组
int a[3][2] = { 1,2,3,4,5,6 }, (*p)[2]; p = a; printf("%d\\n",a...
假如:int **b , *a; b = &a; 所以*b中存放的是指针a指向的地址值, b就是a的地址值。所以这里的**a 和*a就是这个道理。这里*a就是第一行首地址的地址值
...int a[3][2]={1,2,3,4,5,6}, (*p)[2]=a;表达式**(p+2)的值?_百度...
则p+2就指向了a[3],*(p+2)是a[3]的首地址,**(p+2)就是a[3]的首元素,即为5。
...和语句int a[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*p[0]+1...
【答案】:C 解析:本题中a为三维数组,其中a[0],a[1],a[2]分别代表它的三维(的首指针),p为一个一维指针数组,含有3个元素,每两行代码把数组的第二维的首指针赋值给指针数组的第一个值,所 以,* (p[0] +1)即取p[0]所指数组的第二个值,即为数组a的第二维的第二个值,即为a...
int a[3][2]={1,2,3,4,5,6,},*p[3]; p[0]=a[1]; 则 *(p[0]+1)所代表...
应该改成 (*p)[2],这样的话p就是一个指向含2个int型元素的整型数组的指针。(p[0]+1)=*(a[1]+1)=a[1][1]=4;
C语言:定义int a[3][2]={1,2,3,4,5,6};,详解**(a+1)、*(a+1)[0...
它们的值都是3。因为a是指向有2个元素的一维数组的指针,那么——(a+1)——所以,a+1指向了从3开始的二维数组,*(a+1)就是元素3的指针,**(a+1)自然是3。(a+1)[0]——由于[]优先级高于*,所以被解释为*((a+1)[0]),参照1,(a+1)[0]就是元素3的指针,*(a+1)[0]就是元素...
...int a[3][3]={1,2,3,4,5,6,8,9,10},则printf("%d",*(*(a+1)+2...
a是二维数组,则a表示的是指针的指针,(a+1)表示的是a[1][0]的地址,(*(a+1)+2)表示的是在a[1][0]的地址加2,再取这个地址上的值也就是6了
c语言 int a[]={1,2,3,4,5},*p; p=a; printf("%d\\n",*
输出是2,先++p,再输出其指向的值
int a[3][2]={1,2,3,4,5},*p[3];p[0]=a[1];则*(p[0]+1)代表的数组元素...
代表数组元素a[1][1]=4;把a[1]地址赋值给了指针p[0],则p[0]指向了a[3][2]的第二行a[1],所以*(p[0]+1)代表的是数组中的a[1][1]=4;下面是我上机实验的结果:
有以下定义和语句 C语言
int a[3][2]={1,2,3,4,5,6}产生的结果是 a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4,a[2][0]=5,a[2][1]=6 根据数组的表示法,数组名可以指代数组整体,还可以指代数组头元素位置 也就是说a[0]就是表示1,2中的那个1的位置,a[1]就表示3,4中3的位置,类推...
int a[]={1,2,3,4,5}; int *p=a; printf("%d\\n",*p); 为什么结果是1呢...
输出顺序按照从右往左运行,最后的是*P,因为*p=a,所以*P输出数组的第一个元素 最后的*p=1;--(*p)先自减=0,*p=0;p--先复制=0;p=0;(*P)++先复制=0;(++p)中++p自加1,变为坐标为1的元素,a[1]=*(++p)=2;p此时也指向a[1]的,*p=2;...