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