将2D数组传递给函数 [英] passing a 2D array to a function
本文介绍了将2D数组传递给函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
gcc 4.6.2 c89
gcc 4.6.2 c89
我有以下要传递给函数的2D数组:
I have the following 2D array that I want to pass to a function:
char elements[MAX_NUM_ELEMENTS][MAX_STRING_LEN] = {{0}};
我的函数原型是:
int get_elements(char **elements)
我正在这样调用函数:
get_elements(elements);
但是,出现以下错误:
expected ‘char **’ but argument is of type ‘char (*)[128]’
所有数组都会分解为指针,所以请确定为什么我不能只传递指针.
All arrays declay into pointers, so sure why I can't just pass the pointer.
非常感谢您的任何建议,
Many thanks for any advice,
推荐答案
如果要传递给您的函数的对象定义为:
If the object to pass to your function is defined as:
char elements[MAX_NUM_ELEMENTS][MAX_STRING_LEN];
您的函数原型不应为:
int get_elements(char **elements)
但是:
int get_elements(char elements[][MAX_STRING_LEN])
或
int get_elements(char (*elements)[MAX_STRING_LEN])
(两种形式都是等效的)
(both forms are equivalent)
其原因是类型为
char [MAX_NUM_ELEMENTS][MAX_STRING_LEN]
是
char (*)[MAX_STRING_LEN]
(指向MAX_STRING_LEN
字符数组的指针)而不是char **
(指向char
指针的指针).
char (*)[MAX_STRING_LEN]
(a pointer to an array of MAX_STRING_LEN
chars) and not char **
(a pointer to a pointer of char
).
这篇关于将2D数组传递给函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文