如何使用带有双指针变量的结构字段(没有支持变量)?
Posted
技术标签:
【中文标题】如何使用带有双指针变量的结构字段(没有支持变量)?【英文标题】:how to use a struct field with a double pointer variable (without a support variable)? 【发布时间】:2020-05-30 23:47:46 【问题描述】:我在 c 中有这个结构
struct node
int info;
struct node* link;
;
这个过程:
void example(struct node** head)
struct node* tmp;
tmp=*head;
tmp->info=0;
*head=tmp;
并在主程序中调用过程
example(&head);
所以要修改head->info我需要一个支持变量,没有支持变量还有另一种方法吗?
【问题讨论】:
【参考方案1】:使用这个:
void example(struct node** head)
(*head)->info=100;
它的作用与您的 example
函数相同。
通过取消引用struct node**
,我们得到struct node*
,然后我们可以使用->
箭头运算符简单地访问它的成员。
【讨论】:
结构愉快 :-)【参考方案2】:如果你有一个指向像
这样声明的对象的指针struct node *head;
head = malloc( sizeof( struct head ) );
那么你就可以写了
head->info = 10;
因此,由于对象info
是通过引用传递给函数示例,因此将函数的参数声明为指针的指针没有多大意义
void example(struct node** head)
^^^^^^^^^^^
你可以像这样定义函数
void example(struct node *head)
head->info=0;
在函数中改变head本身时,需要通过引用传递head。
例如
void insert( struct node **head, int info )
struct node *tmp = malloc( sizeof( struct node ) );
tmp->link = *head;
tmp->info = info
*head = tmp;
//^^^^^^^^^^^
如果您需要使用指向指针头的指针更改数据成员信息,那么首先您需要取消引用它以获取指向对象信息的指针,然后应用运算符 ->。例如
( *head )->info = 0;
在 C 语言中,如果你想在函数中更改一个对象(尤其是指针),你必须通过引用传递它,而在 C 语言中意味着通过指向它的指针传递一个对象。
【讨论】:
以上是关于如何使用带有双指针变量的结构字段(没有支持变量)?的主要内容,如果未能解决你的问题,请参考以下文章