c - 字符串和函数的多维数组

标签 c arrays string multidimensional-array

在 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]);

记住:

  1. 数组的值是指向其第一个元素的指针(数组对象转换为指针)
  2. 在函数声明中,T 类型数组的参数调整为指向 T 的类型指针

关于c - 字符串和函数的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14911967/

相关文章:

清理所有空格和换行符 C 或 Lex/Bison

内核可以启动对顺序文件的写入吗?

c - 如果传递了冲突的编译器标志,GCC 会如何表现?

javascript - JavaScript RegExp AKA 中 LIKE '%$word%' 的相等性 如何制作 JavaScript 搜索引擎

javascript - 获取 React 渲染中 map 返回的数组大小

ios - 从 Objective C 调用 Swift 中定义的 NSString 扩展

c++ - 多线程环境中的信号处理函数

java - Java 中的循环中的循环

Swift:缩小 XML

java - 如何更改属性的随机元素?