案例一:
c
#include <stdio.h>
#include <stdbool.h>
#include <string.h> // 添加string.h头文件用于strcpy
//结构体指针
//方式 1 : 先定义结构体
struct Dog
{
char *name;
int age;
char weight;
};
//方式 1 :
char *get_dog_info(struct Dog dog)
{
static char info[40];
sprintf(info, "name:%s, age:%d, weight:%d", dog.name, dog.age, dog.weight);
return info;
};
char *get_dog_info1(struct Dog *dog)
{
static char info1[30];//静态局部指针变量
sprintf(info1, "name:%s, age:%d, weight:%d", dog->name, dog->age, dog->weight);
return info1;
};
int main()
{
//方式1
struct Dog dog = {"旺财", 2, 10};
printf("dog info: %s\n", get_dog_info(dog));
//方式2
struct Dog *dog1 = &dog;
//或
char *Info = NULL;
Info = get_dog_info1(dog1);
printf("dog1 info: %s\n", Info);
printf("dog1 info: %s\n", get_dog_info1(dog1));
return 0;
}
案例二:
c
#include <stdio.h>
#include <stdbool.h>
#include <string.h> // 添加string.h头文件用于strcpy
//结构体指针
//方式 1 : 先定义结构体
struct Box
{
double length;
double width;
double height;
};
double bulk(struct Box *box)
{
return box->length * box->width * box->height; //使用结构体指针访问结构体成员
}
int main()
{
//方式1
struct Box box1;
printf("请输入长、宽、高:\n");
scanf("%lf %lf %lf", &box1.length, &box1.width, &box1.height);
printf("体积 = %.2lf\n", bulk(&box1)); //使用结构体指针作为函数参数
return 0;
}
案例三:
c
#include <stdio.h>
#include <stdbool.h>
#include <string.h> // 添加string.h头文件用于strcpy
//结构体指针
//方式2 : 在函数中定义结构体
struct Person
{
char name[20];
int age;
double pay;
};
void print(struct Person *ptr)
{
// printf("姓名:%s,年龄:%d,工资:%.2lf\n", p->name, p->age, p->pay); //使用结构体指针访问结构体成员
ptr->pay =( ptr->age > 18) ? 3000 : 1000;
}
int main()
{
//方式2
struct Person ptr11;
printf("请输入姓名、年龄\n");
scanf("%s %d", &ptr11.name, &ptr11.age);
print(&ptr11);
struct Person *ptr = &ptr11;
printf("姓名:%s ,年龄:%d ,工资:%.2lf \n", ptr->name, ptr->age, ptr->pay); //使用结构体指针访问结构体成员
return 0;
}