博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言定义结构类型的几个方法
阅读量:6911 次
发布时间:2019-06-27

本文共 1589 字,大约阅读时间需要 5 分钟。

hot3.png

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

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

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

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

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

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

#include 
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 
#include "test.h"int main(){ mys one; one.name = (mys){.name = "heihei"}; one.age = 25;}

 

结构变量初始化

#include 
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

你可能感兴趣的文章
Confluence 6 配置 Office 转换器
查看>>
Spring中属性文件properties的读取与使用
查看>>
vShield保护虚拟化环境一例
查看>>
云计算与虚拟化概述-你不得不知的云计算与虚拟化基础知识
查看>>
在VMmware中安装CentOs 6.6,kdump启动失败的原因
查看>>
iOS各种绘图代码整合
查看>>
Lambda表达式-Stream简介
查看>>
Web开发技术--oscache教程
查看>>
C# 将类的内容写成JSON格式的字符串
查看>>
Android SqliteManager 源码
查看>>
iSCSI, FC和FCoE的比较和适用场景
查看>>
MySQL - 学习入门
查看>>
IT从业人员关注哪些问题
查看>>
Windows 2012 Hyper –V 3.0 New Functions
查看>>
maven部分插件配置demo
查看>>
BZOJ 2818GCD
查看>>
提交包到iTunes Connect时构建版本“正在处理”后直接消失的问题
查看>>
我的友情链接
查看>>
QQ空间技术架构之深刻揭密
查看>>
nfs常见问题解决方法
查看>>