C语⾔⼆维数组作为函数参数的使⽤
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]);
}
int main()
{
char str[][5] = {“abc”,“def”,“ghi”};//⼀维数组个数是否指定没关系,够⽤就⾏
func(3, str);
return 0;
}
⽤⼆维数组名作为实参或者形参,在被调⽤函数中对形参数组定义时可以指定所有维数的⼤⼩,也可以省略第⼀维的⼤⼩说明,如:
void Func(int array[3][10]);
void Func(int array[][10]);
⼆者都是合法⽽且等价,但是不能把第⼆维或者更⾼维的⼤⼩省略。
⽅法⼆,形参声明为指向数组的指针。
例如:
#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]);
}
int main()
{
char str[][5] = {“abc”,“def”,“ghi”};//⼀维数组个数是否指定没关系,够⽤就⾏
func(3, str);
return 0;
}
注意:
在void func(int n,char (str)[5])中,*array需要⽤括号括起来。*
这种形式的声明参数是⼀个指针,它指向具有5个元素的⼀维数组。因为[]的优先级⽐ * 的优先级⾼,故*array必须⽤括号括起来,否则变成了
void func(int n,char *str[5]);
这时候参数相当于是声明了⼀个数组,该数组有5个元素。
⽅法三,形参声明为指针的指针。
例如:
#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]);
}
c语言二维数组表示方法
void main()
{
char* p[3];
char str[][5] = {“abc”,“def”,“ghi”};
func(3, str);
}
在函数中使⽤传参过来的⼆维数组(指针)进⾏数组取值的时候不能使⽤(array[i][j])这种形式来取值。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。