将2D数组传递给函数 [英] passing a 2D array to a function

查看:64
本文介绍了将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆