目录
创建结构体
struct Product//创建结构体
{
char name[4];int price;int s;
};//看清楚这里还有一个分号
结构体赋初值
类似于其他类型赋初值,要在前面加上类型,结构体赋初值要把定义的结构体加上
struct Product pd1={"zzq",300,2};
struct Product pd2={"zyx",3000,5};
情况一:在main()函数里面赋值,局部变量
#include <stdio.h>
struct Product//创建结构体
{
char name[4];int price;int s;
};//看清楚这里还有一个分号
int main()
{
struct Product pd1={"zzq",300,2};//结构体初始化(结构体类型 + {})
struct Product pd2={"zyx",3000,5};
return 0;
}
情况二:在外部设全局变量
注意分号位置
struct Product//创建结构体
{
char name[4];int price;int s;
}pd1,pd2;
使用结构体
(结构体.数组名)
输出
#include <stdio.h>
struct Product//创建结构体
{
char name[4];int price;int s;
}pd1,pd2;
int main()
{
struct Product pd1={"zzq",300,2};//结构体初始化(结构体类型 + {})
struct Product pd2={"zyx",3000,5};
printf("%s\n%d\n%d\n",pd1.name,pd1.price,pd1.s);
return 0;
}
改变值
可变类型
pd1.price = 5000;
不可变类型
一个一个改
pd1.name[1]='y';
pd1.name[2]='x';
结构体数组
#include <stdio.h>
struct Product//创建结构体
{
char name[4];int price;int s;
}pd[2];
int main()
{
int i=0;
struct Product pd[2]={
{"zzq",300,2},{"zyx",3000,5}};//结构体初始化:结构体类型 + {}
for (;i<2;i++)
printf("%s%d%d\n",pd[i].name,pd[i].price,pd[i].s);
return 0;
}
结构体指针
创建指针
struct Product
{
char name[4];int price;int s;
}*p;
使用指针
法一:使用(*p)得到结构体
p = &pd1;//使得p指向pd1
printf("%s%d%d",(*p).name,(*p).price,(*p).s);
#include <stdio.h>
struct Product//创建结构体
{
char name[4];int price;int s;
}pd1,*p;
int main()
{
struct Product pd1={"zzq",300,2};//结构体初始化(结构体类型 + {})
p = &pd1;//使得p指向pd1
printf("%s%d%d",(*p).name,(*p).price,(*p).s);
return 0;
}
法二:用"->"
#include <stdio.h>
struct Product//创建结构体
{
char name[4];int price;int s;
}pd1,*p;
int main()
{
struct Product pd1={"zzq",300,2};//结构体初始化(结构体类型 + {})
p = &pd1;//使得p指向pd1
printf("%s%d%d",p->name,p->price,p->s);
return 0;
}
函数传递
传递结构体中某一值
int add(char q)
在main()中调用代码如下
add(p -> name)
传递结构体
int add(struct Product a)
在main()中调用如下
add(pd1)
推荐一下我的上期的文章/抱c语言动态空间申请-CSDN博客
推荐一下我的下期文章 /下方点击关注⭐