C言語関数が二次元配列を伝達する方法
1170 ワード
c言語では、関数を介して2次元配列を伝達する必要があることがよくあります.以下の3つの方法があります.
方法1.パラメータは2次元の長さを与える.
例:
メソッド2では、パラメータは配列を指すポインタとして宣言されます.
例:
方法3、
パラメータはポインタとして宣言されたポインタです.
例:
リファレンス
http://blog.csdn.net/sarsjapanese/article/details/1478545
方法1.パラメータは2次元の長さを与える.
例:
#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);
}
メソッド2では、パラメータは配列を指すポインタとして宣言されます.
例:
#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);
}
方法3、
パラメータはポインタとして宣言されたポインタです.
例:
#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];
char str[][5] = {"abc","def","ghi"};
p[0] = &str[0][0];
p[1] = str[1];
p[2] = str[2];
func(3, p);
}
リファレンス
http://blog.csdn.net/sarsjapanese/article/details/1478545