我创建了一个带有随机值(0-9)的连续数组,但我不知道如何将它传递给打印它的函数。
现在,我只需要在主函数内遍历数组,每当我需要打印它时。但我希望有一个功能,它会使我的代码更清洁。
最小代码示例如下:
#include <stdio.h>
#include <stdlib.h>
int **alloc_2d_int(int rows, int cols);
int main(int argc, char** argv){
int **matrix;
int i,j,size=3;
matrix = alloc_2d_int(size,size);
// generate the array
for (i=0; i<size; i++)
{
for (j=0; j<size; j++)
{
matrix[i][j] = rand() % 10;
}
}
// how I print the array right now
for (i=0; i<size; i++)
{
for (j=0; j<size; j++)
{
printf("[%d][%d]=%d\n", i,j,matrix[i][j]);
}
}
// this is how I want the printing to happen
print_arr(matrix,3);
}
int **alloc_2d_int(int rows, int cols) {
int *data = (int *)malloc(rows*cols*sizeof(int));
int **array= (int **)malloc(rows*sizeof(int*));
int i;
for (i=0; i<rows; i++)
array[i] = &(data[cols*i]);
return array;
}
void print_arr(int **array,int size)
{
int i,j;
for (i=0; i<size; i++)
{
for (j=0; j<size; j++)
{
printf("matrix[%d][%d]=%d\n", i,j,array[i][j]);
}
}
}
错误讯息: 'print_arr'的冲突类型[默认启用]
答案 0 :(得分:3)
您忘记添加功能的声明(原型)。在C语言中,默认情况下,函数的返回类型为int
类型。但对于print_arr()
函数,返回类型为void
。因此,您会收到冲突类型错误。
因此,在print_arr()
函数上方声明main()
函数。像:
void print_arr(int **array,int size);
答案 1 :(得分:1)
你没有在main之前声明print_arr
函数,因此无法找到它。休息工作顺利。