c語言中經常需要通過函數傳遞二維數組,有三種方法可以實現,如下:
方法一, 形參給出第二維的長度。
例如:
#include <stdio.h>
void func(int n, char str[ ][5] )
{
int i;
for(i = 0; i < n; i++)
printf("/nstr[%d] = %s/n", i, str[i]);
}
void main()
{
char* p[3];
char str[][5] = {"abc","def","ghi"};
func(3, str);
}
方法二,形參聲明爲指向數組的指針。
例如:
#include <stdio.h>
void func(int n, char (*str)[5] )
{
int i;
for(i = 0; i < n; i++)
printf("/nstr[%d] = %s/n", i, str[i]);
}
void main()
{
char* p[3];
char str[][5] = {"abc","def","ghi"};
func(3, str);
}
方法三,形參聲明爲指針的指針。
//注意第三種方法
例如:
#include <stdio.h>
void func(int n, char **str)
{
int i;
for(i = 0; i < n; i++)
printf("/nstr[%d] = %s/n", i, str[i]);
}
void main()
{
char* p[3];//這一步如果直接寫成下面這樣:
/**
double arg[3][3]={{1.0,-0.4,-0.3},{-0.3,0.9,-0.2},{-0.2,-0.1,0.8}};
double b[3]={6,3,5};
double result[3];
guass(3,arg,b,result);
**/
//會報這樣的錯誤
//不能將參數 2 從“double [3][3]”轉換爲“double **”
char str[][5] = {"abc","def","ghi"};
p[0] = &str[0][0];
p[1] = str[1];
p[2] = str[2];
func(3, p);
}