C - 如何使用带有双指针变量(没有支持变量)的结构字段?



我在 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); 

所以要修改头>信息我需要一个支持变量,还有另一种没有支持变量的方法吗?

使用这个:

void example(struct node** head){
(*head)->info=100;
}

它将执行与example功能相同的操作。 通过取消引用struct node**我们得到struct node*,然后我们可以简单地使用箭头运算符访问它的成员->

如果你有一个指向声明为这样的对象的指针

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。

例如

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 中意味着通过指向它的指针传递一个对象。

最新更新