在下面的代码中,我将指向*example[10];或整个数组的指针传递给函数?
#include <stdio.h>
void function (int **)
int main ()
{
int *example[10];
function(example);
return 0;
}
void function (int *example[10])
{
/* ... */
return;
}以下代码也有相同的问题:
#include <stdio.h>
struct example
{
int ex;
};
void function (struct example *)
int main ()
{
struct example *e;
function(e);
return 0;
}
void function (struct example *e)
{
/* ... */
return;
}发布于 2014-01-16 14:59:02
C只按值调用,因此(形式上)所有值都按值传递给函数。
但是,C语言中的数组处理方式与其他数据略有不同,因此在第一个示例中,数组示例被转换为指向其第一个元素的指针,然后将该指针(按值)传递给函数。
在您的第二个示例中,e是一个指向结构的指针(但它从未设置为指向任何位置),并且您将该指针(按值)传递给函数。
在这两种情况下,参数传递都是通过值完成的,但是当您传递指向变量的指针时,被调用的函数可以对原始变量进行更改。
https://stackoverflow.com/questions/21165114
复制相似问题