|
发表于 2015-9-7 23:07:21
|
显示全部楼层
本帖最后由 purplenight 于 2015-9-10 23:22 编辑
#include <stdio.h>
void
main() {
char a[3][10] = {"Red", "Green", "Purple"};
/*我们可以把二维数组看作是一种特殊的一维数组
它的元素又是一个一维数组
/* 总结
* 1.一维数组a[n], a+i里的i.
* 若int a[n], a+1== 数组首地址 + 1个sizeof(int) == 4字节
* i==1 1个sizeof(int)== ...
* i==2 2个sizeof(int)== 2*4字节
* 若char a[n], a+1== 数组首地址 + 1个sizeof(char) == 1字节
* printf("%d\n", *(a+i)); 取出地址a+i的值
*
* 2.二维数组a[n][m], a+i的i.
* i取值为1, a+i == a+1
* 若int a[n][m], a+1== 数组首地址+ 1个sizeof(a[n])== 1 * m * sizeof(int) == 4m字节
* i==1 1个sizeof(a[n])== ...
* i==2 2个sizeof(a[n])== 2 * m * sizeof(int) == 2* 4m字节
* 若char a[n][m], a+1== 数组首地址+ 1个sizeof(a[n])== 1 * m * sizeof(char) == m字节
* printf("%d\n", *(a+i)); 取出地址a+i( a[i], i=0,1,2,...n-1 )的值
*
* 二维数组a[3][10]看作特殊的一维数组a[3]
* (a+0)数组元素a[0]的地址
* *(a+0)取出a[0]的值
* a[0]的元素又是一个一维数组
* 因此*(a+0)取出的就是这个一维元素的首地址
* 那么*(a+0)+0表示: (提示: 一维数组a[n]中, a+0数组元素a[0]的地址)
* :一维数组的0号数组元素的地址
* *(a+0)+1表示一维数组的1号数组元素的地址
* 这里的一维数组是a[0]这个特殊的一维数组
* (a+1)数组元素a[1]的地址
* *(a+1)+1表示一维数组的1号数组元素的地址
* 这里的一维数组是a[1]这个特殊的一维数组
* (a+2)数组元素a[2]的地址
* *(a+2)+1表示一维数组的1号数组元素的地址
* 这里的一维数组是a[2]这个特殊的一维数组
* " *( *(a+i)+j)表示一维数组的j号数组元素的地址上的数据取出
* 这里的一维数组是a[ i ]这个特殊的一维数组 "
*/
} |
评分
-
查看全部评分
|