在 C...
假设我有一个像这样的多维字符串数组:
//Array declared in main. Will Contains strings from user-input later on
char myArray[10][10];
为什么我不能将数组传递给这个函数
//Function prototype:
void myFunc (char *mynewArray[]);
// Function call in main()
myFunc(myArray);
我对数组和指针的理解是,当我调用 myFunc 时,我正在传递数组的地址。接收函数接收该地址并将其作为指针存储。然后我应该能够访问 myFunc 中的 mynewArray[1]。但是它不起作用?
我对数组和指针的理解是否错误?
最佳答案
void myFunc (char *mynewArray[]);
在 C 语言中相当于:
void myFunc (char **mynewArray);
但是你的数组的值是char (*)[10]
。
你需要有这样的东西:
void myFunc (char (*mynewArray)[10]);
或同等内容
void myFunc (char mynewArray[][10]);
记住:
- 数组的值是指向其第一个元素的指针(数组对象转换为指针)
- 在函数声明中,
T
类型数组的参数调整为指向T
的类型指针
关于c - 字符串和函数的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14911967/