一、定义结构体变量的方法
1.1先声明结构体类型在定义变量名
例如:
a.声明结构体类型
struct student
{
int num;
char name[20];
char sex;
int age;
}
b.定义结构体变量
struct student stu1,stu2;
1.2声明类型的同时定义变量
struct student
{
int num;
char name[20];
char sex;
int age;
}stu1,stu2;
1.3直接定义结构体类型变量
struct
{
int num;
char name[20];
char sex;
int age;
}stu1,stu2;
二、结构体变量的引用
结构体变量名.成员名
stu1.num = 1000;
三、结构体变量的初始化
和其他类型变量一样,对结构体变量可以在定义时指定初值
struct
{
int num;
char name[20];
char sex;
int age;
}stu1={10010,"xiaoming",'M',24};
四、结构体数组
4.1定义结构体数组
和定义结构体变量的方法相仿,只需要说明其为数组即可。
例如:
struct student
{
int num;
char name[20];
char sex;
int age;
};
struct student stu[4];
也可以直接定义一个结构体数组,
例如:
struct student
{
int num;
char name[20];
char sex;
int age;
} stu[4];
或
struct {
int num;
char name[20];
char sex;
int age;
} stu[4];
4.2结构体数组初始化
struct {
int num;
char name[20];
char sex;
int age;
} stu[2]={{10010,"xiaoming",'M',24},{10020,“xiaogang”,'F',23}};
初始化的一般形式为定义数组的时候后面加上“={初值表列}
五、指向结构体类型数据的指针
5.1指向结构体变量的指针
例如:
struct student
{
int num;
char name[20];
char sex;
int age;
}
struct student stu1;
struct student *Pstu;
Pstu = &stu1;
下面几条语句是等价的
stu1.num = 100;
(*p).num = 100;
p->num = 100;
也就是说,以下三种形式等价:
a.结构体变量.成员名
b.(*p).成员名
c.p->成员名
另外,有以下几种运算:
p->n 得到P指向的结构体变量中的成员n的值
p->n++得到P指向结构体变量中的成员n的值,用完该值后使它加1
++p->n得到P指向结构体变量中的成员n的值加1,然后再使用它
5.2指向结构体数组的指针
struct {
int num;
char name[20];
char sex;
int age;
} stu[2]={{10010,"xiaoming",'M',24},{10020,“xiaogang”,'F',23}};
struct student *p;
for(p = stu;p<stu+3;p++)
printf("%5d %-20s %2c %4d\n",p->num,p->name,p->sex,p->age);
C语言学习1——结构体剖析的更多相关文章
-
C语言学习之结构体
前言 一直以来,C语言的学习都在入门阶段,只用到数组.函数.循环.选择.位运算这些基本的知识,较少用到指针.预处理.结构体.枚举类型.文件操作等这些C语言的精髓内容,现在想想真不敢说自己熟练掌握C语言 ...
-
C语言学习笔记--结构体
结构体定义三种方式: #include<stdio.h> //第一种定义方法 struct point { int x; int y; }; struct point p1,p2; //第 ...
-
c语言学习笔记 - 结构体位域
在学习结构体的时候遇到了位域这个概念,位域主要是为了节省内存空间,比如用一个32位,4个字节的int存储一个开关变量时,会造成空间浪费,于是干脆就考虑在这个32划分不同的区域来存储数据,例如划出1位存 ...
-
GO学习-(13) Go语言基础之结构体
Go语言基础之结构体 Go语言中没有"类"的概念,也不支持"类"的继承等面向对象的概念.Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性. ...
-
4-17疑难点 c语言之【结构体对齐】
今天学习了结构体这一章节,了解到了结构体在分配内存的时候采取的是对齐的方式 例如: #include<stdio.h> struct test1 { int a; char b; shor ...
-
golang | Go语言入门教程——结构体初始化与继承
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题第10篇文章,我们继续来看golang当中的面向对象部分. 在上一篇文章当中我们一起学习了怎么创建一个结构体,以及怎么 ...
-
C语言中的结构体,结构体数组
C语言中的结构体是一个小难点,下面我们详细来讲一下:至于什么是结构体,结构体为什么会产生,我就不说了,原因很简单,但是要注意到是结构体也是连续存储的,但要注意的是结构体里面类型各异,所以必然会产生内存 ...
-
Go语言基础之结构体
Go语言基础之结构体 Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念.Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性. 类型别名和自定义类型 自定义类型 在G ...
-
C语言第九讲,结构体
C语言第九讲,结构体 一丶结构体的定义 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据.结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种 ...
随机推荐
-
iOS 学习 - 18.TextField 自定义菜单事件,复制和微信分享
菜单事件包括,剪切.拷贝.全选.分享...,此 demo 只有 copy.share 1.定义 field 继承与 UITextField - (BOOL)canPerformAction:(SEL) ...
-
勤能补挫-简单But易错的JS&;CSS问题总结
错误频率较高的JS&CSS问题 勤能补拙,不管是哪门子技术,在实践中多多总结,开发效率慢慢就会提升.本篇介绍几个经常出错的JS&CSS问题,包括事件冒泡.(使用offset.scrol ...
-
解析 csv文件 java ***最爱那水货
/** * csv文件解析 <br> * wx 微信明细数据 第1行是标题 ,最后2行 是总结 提取数据需要过滤<br> * zfb 支付宝明细数据 前4行 和最后4行是总结 ...
-
用代码来理解 C#委托与事件
C#中委托是什么?事件是委托吗? 1.委托是讲方法作为参数代入另一个方法中, 委托可以理解为指向一个函数的引用. class Program { public delegate void Delega ...
-
QT类库与Delphi类库的体系结构对比——两者十分类似!
今天在看QT对象内存管理的一篇文章时:http://blog.csdn.net/dbzhang800/article/details/6300025想到了一个问题:就是QT类库体系结构与Delphi类 ...
-
Edison与Arduino通过USB对接通信
虽然Edison本身就装在一块Arduino扩展板上,但当要接的传感器太多了的时候一个扩展板也不够用了.因此需要再用一Arduino板扩展功能.而两者需要通信才能达到一个整体的效果,因此这里介绍如何用 ...
-
VS 2013Ultimate 开发过程中遇到的问题——listbox的隐藏问题,combobox.textchanged的中文问题
最近项目有需求,就是把一个combobox让它可以根据用户输入的汉字就行模糊查询出匹配的下拉框内容,很简单,是吧 但是!!!在开发中真是遇到了不少问题呢. 一.实现流程 1)我的实现思维是这样的,先把 ...
-
这是一个新的开始at this very monment
简单的介绍下此时自己的情况,和对近几年所做的事做一个总结,并展望下自己的未来和对自己的期待.我会将我的博客分成两种,一个是我的学习笔记,另一个是我的生活记录. 2018年六月底我毕业于一个普通的二本, ...
-
TP5中的小知识
在TP5中如果想用select 查询后,变成数组,用toArray()这个函数的话,必须在连接数据库中把 数据集返回类型变成 'resultset_type'=>'\think\Collecti ...
-
使用swiper来实现轮播图
使用swiper来实现轮播图 swiper实现轮播图几乎是没有一点点技术含量,但是用起来却很方便,包括对移动端的支持也很好. 由于简单这里当然就不会去详细介绍了,推荐两个网址: 1.http://ww ...