gpt4 book ai didi

c - 通过调用带有二维数组参数的函数 print_array 来打印二维数组

转载 作者:行者123 更新时间:2023-11-30 14:26:42 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define length 100

void print_array();

int main()
{
int m,n,i,j;
int A[length][length];
printf("Give dimensions of array (up to 100x100):\ni:\n");
scanf("%d",&i);
printf("j:\n");
scanf("%d",&j);
srand(time(NULL));
for (m=0;m<i;m++)
{
for (n=0;n<j;n++)
{
A[m][n]=rand()%45+1;
printf("A[%d,%d]=%d\n",m,n,A[m][n]);
}
}
print_array(i,j,A);
return 0;
}

void print_array(int i,int j,int A[][j])
{
printf("\n");
int m,n;
for (m=0;m<i;m++)
{
for (n=0;n<j;n++)
{
printf("A[%d,%d]=%d\n",m,n,A[m][n]);
}
}
}

你好。我试图通过调用函数 print 来打印二维数组,但是当我运行该程序时,我得到:

对于第一个 printf() 正确的值:

A[0,0]=25
A[0,1]=19
A[0,2]=13
A[1,0]=4
A[1,1]=17
A[1,2]=43
A[2,0]=7
A[2,1]=37
A[2,2]=20

但是当在 print_array 的函数调用中使用第二个 printf() 时,我得到:

A[0,0]=25
A[0,1]=19
A[0,2]=13
A[1,0]=0
A[1,1]=0
A[1,2]=0
A[2,0]=0
A[2,1]=0
A[2,2]=0

似乎我错过了一些有指针的东西......谢谢。

最佳答案

这是 C99,对吧?

问题是您混淆了数组大小。

主程序有 int A[length][length],但随后您调用具有最终尺寸的动态大小的函数,A[][j]。如果j != length,则该函数将错误地索引数组。

我建议将函数调用中的数组表示为指向第一个元素的裸指针,并手动进行索引:

void print_array(const int *A, size_t width, size_t height)
{
for(size_t i = 0; i < height; ++i)
{
for(size_t j = 0; j < width; ++j)
printf("A[%zu][%zu] = %d\n", i, j, A[i * width + j]);
}
}

关于c - 通过调用带有二维数组参数的函数 print_array 来打印二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8715034/

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