C语言学习1——结构体剖析
一、定义结构体变量的方法
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 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种 ...
随机推荐
- Ubuntu 和 Redhat / Fedora 服务管理命令对比表(附Fedora16新的服务管理工具systemctl )
以 apache/httpd 服务作为例子 任务 Red Hat / Fedora Ubuntu Ubuntu (with sysv-rc-conf or sysvconfig) 立即启动/停止某服务 ...
- HTML5扩展之微数据与丰富网页摘要
一.微数据是? 一个页面的内容,例如人物.事件或评论不仅要给用户看,还要让机器可识别.而目前机器智能程度有限,要让其知会特定内容含义,我们需要使用规定的标签.属性名以及特定用法等.举个简单例子,我们使 ...
- qt开源社区学习
http://bbs.qter.org/forum.php?mod=forumdisplay&fid=52
- 两个list 合并成新一个list
- 整合TabBarController与NavigationController
一.项目结构 一开始创建一个空的项目
- Socket.io和Redis写Realtime App 之express初试
第一步:用npm下载express前端框架 注意事项:首先要确保已经安装了node.js和 npm 然后在项目中创建一个package.json文件,不能完全为空不写,至少要有两个大括号,不然怎么证明 ...
- node.js基础 1之 HTTP流程实例
好详细的说,要反复看反复使用~~~ 通过分析其中的Timing可以分析页面慢的瓶颈在哪 与上图对应: Stalled: 等待时机,浏览器要发生请求,到能发出请求的时间.不包括DNS查询和连接建立时间 ...
- javascript 之 prototype继承机制
理解Javascript语言的继承机制 javascript没有"子类"和"父类"的概念,也没有"类"(class)和"实例&qu ...
- ionic ngCordova插件安装
ngCordova的安装配置 官网提供了两种安装的方法: 1. 使用bower来安装 2. 下载zip文件 推荐使用bower安装,在使用bower之前,我们电脑中需要先配置bower.bower的配 ...
- Synchronized快
/* JAVA对于多线程的安全问题提供了专业的解决方式 就是同步代码块 synchronized(对象)//这个对象可以为任意对象 { 需要被同步的代码 } 对象如同锁,持有锁的线程可以在同步中执行 ...