函數傳遞二維數組

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);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章