gpt4 book ai didi

C - 将结构指针与整数指针传递给函数

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:16 25 4
gpt4 key购买 nike

void main(){
int a = 100;
int* pa = &a;
*pa = 999;
}

上面的代码将使 a 的值变为 999。但为什么不以相同方式处理指向结构的指针呢?

struct node* head = (struct node*) malloc(sizeof(struct node));
head -> data = 6;
head -> next = NULL;

为什么我们不能使用*head -> data = 6?为什么传递 someMethod(pa) 是按引用传递,而 someMethod(head) 是按值传递? reference

最佳答案

Why can we not use *head -> data = 6?

因为 -> 是一个解引用运算符,替换星号 *。你也可以用星号重写

(*head).data = 6

你需要括号因为 dot has higher precedence than indirection .引入运算符 -> 是为了在指针指向 struct 的情况下使间接更具可读性。

why passing someMethod(pa) is pass by reference and someMethod(head) is pass by value?

都是按值传递,因为指针也是按值传递的。传递指针可以让您引用原始变量并修改它,但指针本身会被复制。

关于C - 将结构指针与整数指针传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43773573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com