对于我正在处理的赋值,我需要使用函数来处理字符串数组中的数据 . 真的,一系列字符数组 . 我这样定义数组:
char strings[5][100];
所以在内存中大概有500个连续的字符 . 我定义的函数如下所示:
void foo(char *labels[100]);
我想我可能会遇到一些语法问题,但我认为这样做是在说,"I'm a function that expects a pointer to an array of 100 chars."所以 labels*
会指向第一个字符数组,而 (labels + 1)*
会指向第二个字符串,依此类推 . 我正在调用这样的函数:
foo(&strings[0]);
我认为这样做是为了 grab strings
中第一个字符数组的地址 . 我收到的错误消息告诉我函数需要 char **
,但参数是 char (*)[100]
. 这让我很困惑,因为我没有指定指向 char
的指针 .
非常感谢任何帮助,或者如果你能够 pointer
我正确的方向 :)
2 回答
将
strings
声明为包含5个元素的数组 . 每个元素都是100个字符的数组 .将
foo
声明为返回void并接受指针数组的函数 . (100只是装饰性的:把它留空或放42或10000是完全相同的东西)你要
其中参数是指向正好100个字符的数组的指针 .
strings
是一个二维数组 . 所以当传递给函数时它会衰减到char(*)[100]
. 相反,你可以让原型像 -