Ran*_*raj 1 c struct pointers linked-list data-structures
void main(){
int a = 100;
int* pa = &a;
*pa = 999;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将使a的值为999.但是为什么结构的指针不会以相同的方式处理?
struct node* head = (struct node*) malloc(sizeof(struct node));
head -> data = 6;
head -> next = NULL;
Run Code Online (Sandbox Code Playgroud)
为什么我们不能使用*head -> data = 6?为什么传递someMethod(pa)是通过引用someMethod(head)传递并通过值?参考
为什么我们不能使用
*head -> data = 6?
因为->是取消引用运算符替换星号*.你也可以用星号重写
(*head).data = 6
Run Code Online (Sandbox Code Playgroud)
您需要括号,因为dot的优先级高于间接.->已经引入了运算符,以便在指向structs的情况下使间接更具可读性.
为什么传递
someMethod(pa)是通过引用someMethod(head)传递并且通过值传递?
它都是通过值传递的,因为指针也是按值传递的.传递指针使您可以引用原始变量并对其进行修改,但会复制指针本身.