为了通过指向指针的指针访问结构成员,我们需要遵循以下步骤:
typedef struct {
int age;
float height;
} Person;
Person *personPtr1; // 指向Person结构的指针
Person **personPtr2; // 指向Person指针的指针
personPtr1 = (Person *) malloc(sizeof(Person));
(*personPtr2)->age = 25;
(*personPtr2)->height = 175.5;
注意其中的双箭头->
表示指针操作,当我们使用指向指针的指针时,首先需要使用*
操作符获取内部指针,然后再使用->
操作符访问结构成员。
下面是一个完整的例子:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int age;
float height;
} Person;
int main() {
Person *personPtr1; // 指向Person结构的指针
Person **personPtr2; // 指向Person指针的指针
personPtr1 = (Person *) malloc(sizeof(Person));
personPtr2 = &personPtr1; // 将personPtr1的地址赋给personPtr2
(*personPtr2)->age = 25;
(*personPtr2)->height = 175.5;
printf("Age: %d, Height: %.1f
", personPtr1->age, personPtr1->height);
free(personPtr1);
return 0;
}
这段代码首先创建了一个名为Person
的结构体,然后创建了一个指向该结构体的指针(personPtr1
)和一个指向指针的指针(personPtr2
)。接着我们使用(*personPtr2)->age
和 (*personPtr2)->height
修改结构体中的年龄和身高值。最后,在结束之前释放分配给结构体的内存。
领取专属 10元无门槛券
手把手带您无忧上云