结构体指针是指向结构体变量的指针,它可以指向结构体变量的地址。结构体是由多个不同数据类型的变量组成的复合数据类型,通过结构体指针,可以方便地对结构体变量进行访问和操作。
结构体指针的定义方式为:“struct 结构体名* 指针变量名;”
结构体指针的初始化可以通过以下两种方式:
1、先定义结构体变量,再将结构体变量的地址赋值给结构体指针:
struct Student{ char name[20];
int age;
float score;
};
int main(){
struct Student stu = {"Tom", 18, 90.5};
struct Student* p = &stu;
return 0;
}
2、直接定义结构体指针,并利用动态内存分配函数malloc()动态分配内存空间:
struct Student* p = (struct Student*)malloc(sizeof(struct Student));
通过结构体指针,可以方便地对结构体变量进行访问和操作,使用方式如下:
1、通过指针访问结构体变量:
struct Student stu = {"Tom", 18, 90.5};struct Student* p = &stu;
printf("name=%s, age=%d, score=%.2f", p->name, p->age, p->score);
2、通过指针修改结构体变量的值:
struct Student stu = {"Tom", 18, 90.5};struct Student* p = &stu;
p->age = 19;
printf("age=%d", stu.age);
3、通过指针传递结构体变量的地址进行函数调用:
struct Student{ char name[20];
int age;
float score;
};
void print(struct Student* p){
printf("name=%s, age=%d, score=%.2f", p->name, p->age, p->score);
int main(){
struct Student stu = {"Tom", 18, 90.5};
struct Student* p = &stu;
print(p);
return 0;
}
在用完结构体指针后,需要将动态分配的空间进行释放,可以使用free()函数进行释放,释放格式如下:
free(pointer);
其中,pointer是指向动态分配空间的指针变量。