gpt4 book ai didi

c - 在 C 中使用指针打印二维数组

转载 作者:行者123 更新时间:2023-11-30 21:12:10 24 4
gpt4 key购买 nike

#include "stdio.h"

void main(){
int a[2][2]={1, 2, 3, 4};
int a[2][2]={1, 2, 3, 4};
display(a, 2, 2);
show(a, 2, 2);}
}

display(int *k, int r, int c){
int i, j, *z;
for(i = 0; i < r; i++){
z = k + i;
printf("Display\n");
for(j = 0; j < c; j++){
printf("%d", *(z + j));
}
}
}

show(int *q, int ro, int co){
int i, j;
for(i = 0; i < ro; i++){
printf("\n");
for(j = 0; j < co; j++){
printf("%d", *(q + i*co + j));
}
}
}

输出:

Display
12
23
Show
12
34

为什么 Display() 不显示 1223,而 show() 却显示 1234?两者都使用相同的逻辑来显示二维数组。请问有人可以帮忙吗?

最佳答案

display中,您使用两个计数器,i用于行,j用于列。由于数组在内存中按顺序排列,每次您想要从一行移动到下一行时,您都需要将 i 增加一列的大小,即 c。因此,您应该将 i*c 添加到 k,而不是 i

完整功能:

display(int *k,int r,int c){
int i,j,*z;
for(i=0;i<r;i++){
z=k+i*c;
printf("Display\n");
for(j=0;j<c;j++){
printf("%d",*(z+j));
}
}
}

关于c - 在 C 中使用指针打印二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11492988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com