我试图理解下面的代码,但我觉得我错过了一些东西:
假设我有一个如下所示的结构:
struct example
{
int a;
int b;
int c;
int d;
};
现在我创建一个类型示例的数组,如下所示:
example arr[4] = {0};
现在,如果我想将此数组传递给另一个函数,比如 func1,它又调用另一个函数 func2,它实际上修改了 arr,
int main(){
...
...
func1(arr);
}
void func1(arr){
func2(arr)
}
void func2(arr)
{
// arr gets modified here
}
我知道实现这一目标的一种方法如下:
int main()
{
example *arrp = arr;
func1(&arrp);
}
void func1(example **arr)
{
func2(*arr);
}
void func2(example *arr)
{
arr.a = 1;
....
}
有没有更好的方法来做到这一点,而不使用额外的变量,arrp?
这里不需要指针到指针,因为
func2
不会修改指针本身(不会使 arrp
指向其他东西)。
typedef struct
{
int a;
}
example;
void func2(example *arr)
{
arr[0].a = 1;
}
void func1(example *arr)
{
func2(arr);
}
int main()
{
example arr[4] = {0};
func1(arr);
}