我遇到了一些包含以下内容的代码:
struct ABC {
unsigned long array[MAX];
} abc;
Run Code Online (Sandbox Code Playgroud)
何时使用这样的声明是有意义的?
以下是C Programming Just the FAQs一书的摘录.这不是错误的,因为Arrays永远不能通过引用传递吗?
VIII.6:如何通过值将数组传递给函数?
答案:通过在被调用函数中声明带有方括号(
[和])的数组名称,数组可以按值传递给函数.调用函数时,只需将数组的地址(即数组的名称)传递给被调用的函数即可.例如,以下程序将数组传递x[]给byval_func()value 命名 的函数:该
int[]参数告诉编译器该byval_func()函数将采用一个参数 - 一个整数数组.byval_func()调用该 函数时,将数组的地址传递给byval_func():Run Code Online (Sandbox Code Playgroud)byval_func(x);由于数组是按值传递的,因此会生成数组的精确副本并将其放在堆栈中.然后被调用的函数接收该数组的副本并可以打印它.因为传递给的数组
byval_func()是原始数组的副本,所以修改byval_func()函数中的数组对原始数组没有影响.