6种方法遍历二维数组

来源:互联网 发布:淘宝客服常遇到的问题 编辑:程序博客网 时间:2024/05/16 09:54
#include <stdio.h>int main(void){int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};int i, j;int *p = *a; // 2: int *p = &a[0][0]; 3: int *p = a[0];int *q[3] = {a[0], a[1], a[2]};int **b = q;int (*c)[4] = a; // 整型一维数组指针变量printf("*************************************01*************************************\n");// a: 二维数组名// a[0]: 一维数组名// a[0][0]: 数组元素// sizeof(a)/sizeof(a[0]): 有多少个一维数组(3)// sizeof(a[0])/sizeof(a[0][0]): 一维数组有多少个元素(4)for(i=0; i<sizeof(a)/sizeof(a[0]); i++){for(j=0; j<sizeof(a[0])/sizeof(a[0][0]); j++){printf("%d ", a[i][j]);}}printf("\n");// sizeof(a)/sizeof(a[0][0]: 二维数组中元素个数(12)printf("*************************************02*************************************\n");for(i=0; i<sizeof(a)/sizeof(a[0][0]); i++){printf("%d ", *p++);}printf("\n");// a++: a = a+1printf("*************************************03*************************************\n");for(i=0; i<sizeof(a)/sizeof(a[0][0]); i++){printf("%d ", *(*a+i));}printf("\n");// 4和5是否可以倒置?printf("*************************************04*************************************\n");for(i=0; i<sizeof(a)/sizeof(a[0]); i++){for(j=0; j<sizeof(a[0])/sizeof(a[0][0]); j++){// 第1个*: 间接访问// 第2个*: 间接访问printf("%d ", *(*(b+i)+j));}}printf("\n");printf("*************************************05*************************************\n");for(i=0; i<sizeof(a)/sizeof(a[0]); i++){for(j=0; j<sizeof(a[0])/sizeof(a[0][0]); j++){// *: 间接访问printf("%d ", *q[i]++);}}printf("\n");printf("*************************************06*************************************\n");for(i=0; i<sizeof(a)/sizeof(a[0][0]); i++){// 第1个*: 间接访问// 第2个*: 改变偏移量printf("%d ", *(*c+i));}printf("\n");return 0;}

原创粉丝点击