指针遍历二维数组
#includeint f1(int (*q)[3]);
int f2(int (*p)[3]);
int main()
{
int a[3][3]={
{1,2,3},
{4,5,6},
{7,8,9}
};
char s[3][100]={
{"Hello World!"},
{"How are you?"},
{"What's the hell are you fucking that."}
};
int *p1=&a[0][0];
int (*q)[3]=a;
char (*pstr)[100]=s;
int i;
int j;
int sum1=0;
int sum2=0;
int sum3=0;
int sum4=0;
int sum5=0;
int sum6=0;
for(i=0;
i<3;
i++){
for(j=0;
j<3;
j++){
sum1=sum1+*(*(q+i)+j);
}
}for(i=0;
i<3;
i++){
for(j=0;
j<3;
j++){
sum2=sum2+*(p1+i*3+j);
}
}for(i=0;
i<3;
i++){
for(j=0;
j<3;
j++){
sum3=sum3+*p1;
p1++;
}
}for(i=0;
i<3;
i++){
int *p2=q;
for(j=0;
j<3;
j++){
sum4=sum4+*p2;
p2++;
}
q++;
}
q=a;
sum5=f1(q);
sum6=f2(q);
printf("sum1=%d\nsum2=%d\nsum3=%d\nsum4=%d\nsum5=%d\nsum6=%d\n",sum1,sum2,sum3,sum4,sum5,sum6);
for(i=0;
i<3;
i++){
printf("%s\n",*(pstr+i));
}
return 0;
}int f1(int (*q)[3])
{
int ret=0;
int i;
int j;
for(i=0;
i<3;
i++){
for(j=0;
j<3;
j++){
ret=ret+q[i][j];
}
}
return ret;
}int f2(int (*p)[3])
{
int ans=0;
int i;
int j;
for(i=0;
i<3;
i++){
for(j=0;
j<3;
j++){
ans=ans+*(*(p+i)+j);
}
}
return ans;
}
【指针遍历二维数组】运行结果:
文章图片
推荐阅读
- 分享!如何分分钟实现微信扫二维码调用外部浏览器打开指定页面的功能
- 20180531去二维火学习完给股东的分享
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了
- ROOM1
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- for循环遍历数组
- 集合框架(集合嵌套存储和遍历元素的案例代码实现)
- 051:指针练习(MyMax)
- LeetCode-102.|LeetCode-102. 二叉树的层序遍历