c语言中,如果是二维或多维数组用指针加减运算,那算哪个?如 int a[5][5],*pa; pa=a;pa+2;那结果
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 10:13:15
c语言中,如果是二维或多维数组用指针加减运算,那算哪个?如 int a[5][5],*pa; pa=a;pa+2;那结果是指向a[
pa指向a,pa指向a开头的int型数,pa指向a[0][0],数组采用行优先存储,所以(pa+2)指向a[0][2].
注意区分下列:
int (*p)[5],数组指针,将二维数组看成数组的数组,p指向数组的某一行.
int *p,指向数组中的某个元素.
int**p,指向指针的指针.
int *p[5],指针数组.
当然楼上说的也有一定道理,但不同的编译器对于这个问题的处理是不一样,我用的gcc,直接打印警告,可以通过编译.如果想消除警告,建议采用强制类型转换.如:
pa=(int*)a,
或:pa=(int*)&a[0].
注意区分下列:
int (*p)[5],数组指针,将二维数组看成数组的数组,p指向数组的某一行.
int *p,指向数组中的某个元素.
int**p,指向指针的指针.
int *p[5],指针数组.
当然楼上说的也有一定道理,但不同的编译器对于这个问题的处理是不一样,我用的gcc,直接打印警告,可以通过编译.如果想消除警告,建议采用强制类型转换.如:
pa=(int*)a,
或:pa=(int*)&a[0].
c语言中,如果是二维或多维数组用指针加减运算,那算哪个?如 int a[5][5],*pa; pa=a;pa+2;那结果
在C语言中,有如下的写法:int a = 5; int *pa; pa = &(a + 1);
C语言指针 int *pa[3]={a[0],a[1],a[2]};
在c语言中,有如下式子:int a[5],*pa=a; pa+=2; 他说:*pa=a+2*2=a+4,而不是=a+2
C指针中,int a,b;int pa,pc;*pa= ﹠a,与﹡pc=b有什么区别?
C++中,int a[][3]={{1,2,3},{4,5,0}},(*pa)[3]; pa = a,求Pa中各值和指向
C语言若已定义:int a[5]={1,2,3,4,5},*pa=a;下列叙述错误的是()
7)C语句:int (* pa)[5]; 中,pa 表示的是一个( )
指针pa指向数组a,然后*(pa+i)等价于*(a+i),那么pa和a的区别是什么呢?
C语言中 定义一个二维数组 int a[5][5] 然后a[0][0]+1 表示什么 是表示a[1] 还是表示a[0][
C语言中,*pa,*pb是指向a,b的指针.直接将a,b的值互换,为什么指针还是指向原来的值啊?
用C语言在主函数中定义和初始化一个二维数组a[3][4]和一个指针数组,采用指针数组去访问数组元素a[2][4];