我已經創建了一個具有隨機值(0-9)的連續數組,但我不知道如何將它傳遞給打印它的函數。如何在C中傳遞連續數組作爲參數?
現在我只是遍歷主函數內的數組,每當我需要打印它時。但我想爲此提供一個函數,這將使我的代碼更清晰。
的最小碼例子如下:
#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'[默認啓用]
如果添加爲你'print_arr'功能的原型,你的代碼將工作:http://ideone.com/qMQqtK – mch
或者......移到高於''main'功能print_arr'。基本上,編譯器從上到下解析源文件,並且您需要提供前向聲明,或者在實際使用前移動函數定義*。 –