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 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种 ...
随机推荐
- slideDoor(学习某编程网站的,仅作记录和学习)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 理解RESTful
REST全称为Representational State Transfer,可以翻译为“表现状态转换”,是由是Roy Thomas Fielding在他2000年的博士论文中提出的,目的是为了得到一 ...
- web开发字符乱码问题
java动态网页后台乱码问题总结 乱码可能出现的几块地方: 首先是浏览器和html之间采用的编码不一致 解决办法: 修改浏览器的编码格式 修改html页面的编码格式: <meta http-eq ...
- java 反编译
JavaDecompiler http://jd.benow.ca/jd-eclipse/update/
- Yii2使用教程
安装 中文文档:http://www.yiichina.com/doc/guide/2.0/start-installation 1,安装 这里我直接下载归档文件,压缩包安装了.composer各种麻 ...
- webStorage和cookie的区别
共同点: 都是保存在浏览器端,且同源的 cookie有什么缺点? Cookie数量和长度的限制.每个domain最多只能有20条cookie,每个cookie长度不能超过4KB 安 ...
- java怎么定义一个二维数组?
java中使用 [][] 来定义二维数组 定义数组时也可同时初始化下面是一些例子float[][] numthree; //定义一个float类型的2维数组numthree=new float[5][ ...
- 配置handler vs2013 iis8.0
<system.webServer> <modules runAllManagedModulesForAllRequests="true" /> <v ...
- zoj 1788 Quad Trees
zoj 1788 先输入初始化MAP ,然后要根据MAP 建立一个四分树,自下而上建立,先建立完整的一棵树,然后根据四个相邻的格 值相同则进行合并,(这又是递归的伟大),逐次向上递归 四分树建立完后, ...
- WPF进度条系列②旋转小圆圈
写在之前: 关于WPF的样式,我也是学习了很多朋友的文章才有了下面的东西,因为时间有些久远 & 备份的链接也都不在了. 所以,究竟是看过哪些文章,也是记不清楚了…… 请见谅. ------- ...