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 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种 ...
随机推荐
- 集群tomcat+apache配置文档
http://wenku.baidu.com/link?url=M_Lt07e-9KTIHucYgJUCNSxkjWThUuQ2P8axn8q6YmY_yQw7NmijQoDA2wKmi_FQUxwO ...
- hdu4273Rescue(三维凸包重心)
链接 模板题已不叫题.. 三维凸包+凸包重心+点到平面距离(体积/点积) 体积-->混合积(先点乘再叉乘) #include <iostream> #include<cstd ...
- centos7
1.启用Apache(httpd) Centos7默认已经安装httpd服务,只是没有启动.如果你需要全新安装,可以yum install -y httpd 启动服务:systemctl start ...
- HTML5 十大新特性(六)——地理定位
简单地用一句话概括就是,使用js获取浏览器当前所在的地理坐标,实现LBS(Location Based Service,基于定位的服务). 下面写一下它的基本调用: if(navigator.geol ...
- es5 and es6
es5学习地址:http://www.zhangxinxu.com/wordpress/2013/04/es5%E6%96%B0%E5%A2%9E%E6%95%B0%E7%BB%84%E6%96%B9 ...
- JS基本概念
1.一切(变量.函数名.操作符)都区分大小写 2.标识符:第一个字符必须为字母.下划线或者美元符号,其他字符可以是字母.下划线.美元符号或者数字 3.数据类型 1)undefined:用var声明的变 ...
- 对HTML5校验 自定义验证信息
在HTML5中,表单可以定义一个属性required来触发默认的校验机制,比如: <input type="text" required /> 弹出的错误提示默认为英文 ...
- jmeter for循环嵌套if学习2
if语句中勾选Evaluate选项,每执行一句都会判断result的值是否为true. 执行结果: three没有执行,到debug时变量的值变成tom了
- 关于meta元信息元素
HTML头部<meta>标记通过属性定义文件的名称.内容.关键词.作者.描述等多种信息,但是只能在源代码中显示,页面上无法显示出来.此标签可以在头部有多个. A.设置页面关键词 基本语法: ...
- gulp入门教程
第1步:安装Node 首先,最基本也最重要的是,我们需要搭建node环境.访问 nodejs.org,下载完成后直接运行程序,就一切准备就绪.npm会随着安装包一起安装,稍后会用到它. 为了确保Nod ...