将多维数组作为函数参数传递

帮助PLZ

假设我有两个二维数组,如下所示:

A [2] [3] = {{1,2,4},{2,5,15}}

如果我将其作为函数参数传递

#include <stdio.h>

int fun(int A[][3])  // or int fun( int (*A)[3])
{
.
.
}

main()
{
int A[2][3] = {{1,2,4},{2,5,15}}; 
fun(A); 
}

问)为什么第一个块在函数参数中可以像这样[[]]一样为空,并且为什么可以保持为空?为什么其他人不能像A [] []一样为空?还是为什么这是错误的** A作为函数参数?

现在,如果我有一个三维数组,如下所示:

A [2] [3] [4] = {{{2,21,12,34,23},{322,34,34,23},{323,32,112,324}},{{23,231,21,233},{ 23,5,65,2},{3,23,234,34}}}

如果我将其作为函数参数传递

#include <stdio.h>

int fun(int A[][3][4])  // or int fun( int (*A)[3][4])
{
.
.
}

main()
{
int A[2][3][4] = {{{2,21,12,34,23},{322,34,34,23},{323,32,112,324}}, {{23,231,21,233},{23,5,65,2},{3,23,234,34}}}

fun(A); 
}

问)为什么第一个块可以在函数参数中像[[]这样是空的,为什么它可以留空?为什么其他人不能像A [] [] []那样留空?还是为什么这是错误的*** A作为函数参数?

埃里克·Z

标准说:

可以将“ NT数组”或“ T的未知边界数组”类型的左值或右值转换为“指向T的指针”的右值。结果是一个指向数组第一个元素的指针。

简而言之,它允许将参数int A[x][y][z]转换为int (A*)[y][z]我们通常说这样的数组会衰减为指针。

该标准还说:

仅在指针*与数组[]中不同的参数声明是等效的。也就是说,将数组声明调整为指针声明(8.3.5)。在参数类型(8.3.4)中,只有第二维和后续数组维才有意义。

这意味着int (A*)[y][z]int A[][y][z]用作功能参数时没有区别

因此,可以只传递int A[x][y][z](但不传递int A[][][z]or int A[][][],等等)给需要type参数的函数int A[][y][z]

为什么需要小尺寸的尺寸?因为编译器需要知道要A*指向的元素的类型(此处是int [y][z]),以便它可以正确执行指针算术。例如,A's value = A's value + sizeof(int) * y * z当你++A

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将多维数组作为函数参数传递

来自分类Dev

将数组作为参数传递给函数

来自分类Dev

将 numpy 数组作为函数参数传递

来自分类Dev

在C中将多维数组作为参数传递

来自分类Dev

将数组作为类构造函数的函数参数传递

来自分类Dev

将数组作为类构造函数的函数参数传递

来自分类Dev

将数组数组作为参数传递给函数

来自分类Dev

可变多维数组作为函数参数

来自分类Dev

从Fortran将数组作为函数参数传递给lua

来自分类Dev

从php将数组作为javascript函数参数传递

来自分类Dev

将数组作为参数传递给pick中的函数

来自分类Dev

将数组范围作为参数传递给函数?

来自分类Dev

将指向char数组的指针作为函数的参数传递-C

来自分类Dev

JavaScript将数组作为单独的参数传递给函数

来自分类Dev

将数组作为单个参数传递给php函数

来自分类Dev

将向量数组作为函数参数传递以更改原始值

来自分类Dev

如何将数组作为函数参数传递?

来自分类Dev

将逗号分隔的数组作为函数参数传递

来自分类Dev

将参数作为数组传递给PowerShell函数

来自分类Dev

将数组从结构作为参数传递给函数

来自分类Dev

将数组作为参数传递给C函数

来自分类Dev

将数组作为函数参数传递而不定义变量

来自分类Dev

从php将数组作为javascript函数参数传递

来自分类Dev

将数组作为参数传递给pick中的函数

来自分类Dev

JS将数组作为递归函数的参数传递

来自分类Dev

将指针传递给char数组作为函数的参数-C

来自分类Dev

如何将数组作为函数参数传递?

来自分类Dev

将函数作为参数传递-数组表示法

来自分类Dev

将php数组作为链接参数传递给ajax函数

Related 相关文章

热门标签

归档