c语言结构体大全(千字分享)

目录

创建结构体

结构体赋初值

情况一:在main()函数里面赋值,局部变量 

情况二:在外部设全局变量

 使用结构体

输出

改变值

可变类型

不可变类型

结构体数组

结构体指针

创建指针 

使用指针

函数传递

传递结构体中某一值

传递结构体

创建结构体

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博客 

推荐一下我的下期文章 /下方点击关注⭐

  • 18
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值