更好地理解 C 指针

问题描述 投票:0回答:1

我试图理解下面的代码,但我觉得我错过了一些东西:

假设我有一个如下所示的结构:

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?

c pointers
1个回答
0
投票

这里不需要指针到指针,因为

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.