所使用的编译器为VS2022
先尝试创建结构体和结构体变量,并且打印结构体中的成员
#include<stdio.h>
//创建一个结构体类型
struct Book
{
char name[20];//书的价格
short price;//书的名字
};
//利用结构体类型创建一个该类型的结构体变量
int main()
{
struct Book b1 = {"C语言程序设计",55};//自定义书的名字和价格
struct Book* pb = &b1;//创建指针变量pb保存结构体变量b1的地址
//利用指针变量打印书名和价格(以下两种方法均可)
printf("书名:%s\n价格:%d\n", (*pb).name,(*pb).price);//. 结构体变量.成员
printf("书名:%s\n价格:%d\n", pb->name, pb->price);//-> 结构体指针->成员
return 0;
}
接着,尝试改变结构体变量中的成员,将“C语言程序设计”换成“C++”,需用到函数strcpy
#include<string.h>
int main()
{
struct Book b1 = { "C语言程序设计",55 };
strcpy(b1.name,"C++");//strcpy - string copy - 字符串拷贝-库函数-string.h
//把C++拷贝到b1.name中
printf("%s\n", b1.name);
return 0;
}
注:不可以这样子改:
struct Book b1 = { "C语言程序设计",55 };
b1.name = "C++";
因为b1.name(数组)本质是地址。
改数字可以:
struct Book b1 = { "C语言程序设计",55 };
b1.price = 15;