【发布时间】:2017-10-02 02:00:30
【问题描述】:
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
【问题讨论】:
-
嗯...两者都在此处传递指针(“引用”)。您可以更改它们指向的内容(
int或struct),但使用双指针,您无法更改它们指向的位置。所以你的第二个问题是荒谬的。您的第一个问题基本上误解了->的目的,即取消引用和查找单个运算符中的属性。如果您想查看*进行取消引用,您可以随时使用(*head).data = 6;。 -
@ShadowRanger 你的意思是——但是使用双指针,你可以改变它们指向的位置?
-
@AjayBrahmakshatriya:哎呀。很确定我的意思是输入但没有双指针...。同样的想法。
标签: c pointers data-structures struct linked-list