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 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种 ...
随机推荐
- 学习UFT11.5历程(三)
已经用UFT11.5完成了几个大流程的录制和脚本调测. 现整理下这段过程中脚本中应该记住的点(QTP是VB脚本): 1. 循环和条件部分_reporter结果展示 For i = 1 To brow ...
- python test
#!/usr/bin/env python #-*- encoding: utf- -*- ''' def foo(name): print name, '去砍柴' foo('yangshanlei: ...
- javascript控制cookie
参考:http://www.cnblogs.com/ly312/archive/2010/07/14/1777190.html function getCookies(name) { var arr ...
- javascript正则表达式
引用:http://www.jb51.net/article/72192.htm
- Android文件存储
文件存储是Android中最基本的一种数据存储方式,它不读存储的内容进行任何的格式化处理,所有数据原封不动的保存在文件之中.如果想用文件存储的方式保存一些较为复杂的数据,就需要定义一套自己的格式规范, ...
- VB检测按键CTRL+C的次数
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As IntegerPriv ...
- Java 执行系统命令
在Java中执行系统命令,主要是使用ProcessBuilder和Runtime.getRuntime().exec().而在这里主要是介绍两种方法的使用. 使用情景是在linux系统中,使用menc ...
- neatbean 8+版本 配置
//更改代码行距 打开C:\Users\{yourname}\AppData\Roaming\NetBeans\7.3.1\config\Editors\Preferences,用文本编辑器打开 or ...
- css3实现颜色渐变以及兼容性处理
有时我们会看到网站上的一些图片是渐变色的,这些图片有的是ui设计出来的,有的则是直接通过css3制作出来的.下面就讲一下css3实现渐变色的方法,以及在各个浏览器上的兼容性. CSS3 Gradien ...
- Sublime Text 2 代码片断
原文:Snippets 不管是在编码,还是写畅销书,你都可能会需要一遍又一遍的用到一些文本的小片断.使用片断来结束这种单调无聊的码字吧,片断是一种智能的模板,它能在合适的上下文中插入你需要的文本内容. ...