c - 多维数组作为函数参数的衰减
问题描述
我知道,例如:
void foo(int a[])// or a[x]
编译器会这样考虑:
void foo(int *a)
但我不知道,我也没有发现编译器如何看到多维数组
例如:
void foo(int a[3][4])
会是这样吗?
void foo(int (*a)[4])
还是这样的?
void foo(int **a)
解决方案
当数组衰减时,它会转换为指向第一个元素的指针。在 的情况下int a[3][4]
,a
是 的数组int[4]
,因此指向元素的指针int [3][4]
具有 类型int (*)[4]
。
所以这:
void foo(int a[3][4])
是相同的:
void foo(int (*a)[4])
推荐阅读
- kotlin - java.lang.ClassCastException:java.lang.Integer 无法转换为 android.widget.LinearLayout 当我尝试充气时
- typescript - 当值的类型取决于键但并非所有键都预先知道时,如何定义接口?
- python - Python:根据文本长度更新字典中的值的快速方法?
- visual-studio - Blazor WebAssembly Visual Studio 调试器问题
- r - 通过小标题列表运行 t.test
- javascript - 尝试通过 React Native 将视频上传到 S3 时遇到问题
- powershell - Powershell 获取 InvokeMethodOnNull 消息
- file-upload - Apache Commons FTPSClient 上传无法完成
- webpack - 如何在 Laravel Mix 中使用“node-sass-asset-functions”自定义函数?
- android - Recyclerview 没有正确更新数据