C语言定义结构类型的几个方法

1、在外部声明一个新的结构类型,这种结构在任何函数内都可以使用。声明结构变量的时候需要带上struct+结构类名+变量名。

#include <stdio.h>
struct mys
{
	char *name;
	int age;
	char *gender;
};
int main(){
	struct mys heihei;
	heihei.name = "rainn";
	heihei.age = 25;
	heihei.gender = "man";
}

2、在函数内部声明一个新的结构类型

#include <stdio.h>
int main(){
	struct mys
	{
		char *name;
		int age;
		char *gender;
	};
	struct mys heihei;
	heihei.name = "rainn";
	heihei.age = 25;
	heihei.gender = "man";
}

这种仅在该函数内部可以使用,声明结构变量同上。

3、声明结构类型的时候同时声明变量

#include <stdio.h>
int main(){
	struct mys
	{
		char *name;
		int age;
		char *gender;
	} mys1;
	struct {
		char *job;
		struct mys one;
	} heihei;
	heihei.job = "programmer";
	heihei.one.name = "heihei";
	heihei.one.age = 25;
	heihei.one.gender = "man";
}

*4类型定义。

将结构类型定义在本地头文件中,然后引入之后直接使用,不需要关键字struct。在头文件test.h中定义

typedef struct {
    char *name;
    int age;
} mys;

然后在.c中引入。当然也可以直接在.c文件中写typedef。

#include <stdio.h>
#include "test.h"

int main()
{
    mys one;
    one.name = (mys){.name = "heihei"};
    one.age  = 25;
}

 

结构变量初始化

#include <stdio.h>
int main(){
	struct mys
	{
		char *name;
		int age;
		char *gender;
	} Tom;
	struct {
		char *job;
		struct mys one;
	} heihei, *p;
	Tom = (struct mys){"Tom",18,"man"};
	heihei.job = "programmer";
	p = &heihei;
	(*p).one = (struct mys){"heihei", 25};
	p->one.gender = "man";
	// p->one = (struct mys){.gender = "man"}; 
    //----与上上行的初始化为全部成员初始化,此处若执行则除了gender其他为0/null
	printf("%s\n", (*p).job);
	printf("%s\n", p->one.name);
	printf("%d\n", p->one.age);
	printf("%s\n", p->one.gender);
}

由此看到结构体内部也是可以放结构体成员,还有->操作是可以由指针指向结构体。且与数组不同的是,结构体本身并不是指针,所以取结构体地址的时候需要加上&符号

转载于:https://my.oschina.net/OSrainn/blog/750036

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值