导航:网站首页 >
用指针引用二维数组元素 C语言 指针引用二维数组 为什么
用指针引用二维数组元素 C语言 指针引用二维数组 为什么
相关问题:
匿名网友:
a 是数组首地址,等于 &a[0][0].
*p 声明里是指针。语句里 *p 是 指针指向的值。 语句里 p 是地址.
*p 是1个星号的指针,可以让它指向1维数组,也可以让有序地它指向2维数的各元素。
int a[行][列]; a[j][i] 数组元素排列 是:
第一行 的 第1列,第二列,第三列....
第二行 的 第1列,第二列,第三列....
第三行 的 第1列,第二列,第三列....
2维数可以看成1维数组,排成1字长蛇阵:第一行 的 第1列,第二列,第三列..;
第二行 的 第1列,第二列,第三列....;。。。。直到最后一行最后一列。
#define row 3
#define col 4
int a[row][col]; // 某一元素: a[j][i]
int *p,i,j;
排成1字长蛇阵后,一维下标,可以用二维 下标计算: j*col + i.
某一元素: a[j][i] 的 数值 就是 * (p+j*col+i);
----
写出完整程序,依次输出所有元素,对比:
#include
main()
{
#define row 3
#define col 4
int a[row][col] = { 0,1,2,3,4,5,6,7,8,9,10,11};
int *p;
int i,j;
p=&a[0][0];
for (j=0;j
for (i=0;i
printf("\n");
}
printf("===========\n");
for (j=0;j
for (i=0;i
printf("\n");
}
return 0;
}
======
如果 是 int **p; 才有 *(*(p+i)+j))形式。
对应 a[j][i], 指向的值 是 *(*(p+j) + i)
匿名网友:
1.用指针引用二维数组元素
问:int a[][],*p; 如何用指针引用a[][]? p与a的区别是什么?(如:*(*...
2.C语言 指针引用二维数组 为什么
问:二维数组在内存里面也是线性排列的,为什么直接int *p=a;(a为一个二维...
3.C语言调用二维数组元素时,能否用指针指向其中同一...
答:指针的值一次只能指向一个地址,不能同时访问多个地址,但是可以通过指针的移位来依次访问二维数组同一行的多个元素。例如:*(*(arry+0) + 1)可以访问二维数组arry的第0行,第1列的元素
4.用指针 调用二维数组里的元素 所用两个* 表示的意义
问:我想问一下 用指针 调用二维数组里的元素 所用两个* 表示的意义 像:*(*...
5.c语言二维数组用指针表示的问题
问:#include void main() { int a[3][4]={1,3,5,7,9,11,13,15,17...
6.C语言怎么用指针代替二维数组
答:看你具体的应用,提供几个方法供参考: 1、一级指针 例: int a[M][N]; int *p = &a[0][0]; 相当于将二维数组当一维数组用,需要自己根据N的大小计算下标,使用却很灵活 2、指针数组 例: int a[M][N]; int *p[M]; for(int i=0; i
7.求C语言高手指点:请问如何指针定义二维数组?? ...
问:这几种方法逻辑上都好理解,但我就是在具体表达上面有很大问题,求高手...
8.C语言 怎么用指针输出一个二维数组的全部值
答:C语言的数组(不管多少维)在内存中都是线性储存的。所以用一级指针加偏移就可以访问所有元素。 举个例子,有一个10*10的二维数组a,这样就可以输出: int a[10][10];int *p = (int *)a;int i;for (i = 0; i < 10 * 10; i++)printf(%d, *(p + ...
9.如何让指针指向二维数组?
问:还有要怎么利用指针去引用二维数组中的元素
10.假如我想用指向二维数组的指针来输入几串字符串,然...
答:下面的例子告诉你想知道的问题: main() { char a[5][50]; char (*p)[30];//声明指向二维数组的指针 int i; p=a; for(i=1;i
问题推荐