一、定义结构体变量的方法

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——结构体剖析的更多相关文章

  1. C语言学习之结构体

    前言 一直以来,C语言的学习都在入门阶段,只用到数组.函数.循环.选择.位运算这些基本的知识,较少用到指针.预处理.结构体.枚举类型.文件操作等这些C语言的精髓内容,现在想想真不敢说自己熟练掌握C语言 ...

  2. C语言学习笔记--结构体

    结构体定义三种方式: #include<stdio.h> //第一种定义方法 struct point { int x; int y; }; struct point p1,p2; //第 ...

  3. c语言学习笔记 - 结构体位域

    在学习结构体的时候遇到了位域这个概念,位域主要是为了节省内存空间,比如用一个32位,4个字节的int存储一个开关变量时,会造成空间浪费,于是干脆就考虑在这个32划分不同的区域来存储数据,例如划出1位存 ...

  4. GO学习-(13) Go语言基础之结构体

    Go语言基础之结构体 Go语言中没有"类"的概念,也不支持"类"的继承等面向对象的概念.Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性. ...

  5. 4-17疑难点 c语言之【结构体对齐】

    今天学习了结构体这一章节,了解到了结构体在分配内存的时候采取的是对齐的方式 例如: #include<stdio.h> struct test1 { int a; char b; shor ...

  6. golang | Go语言入门教程——结构体初始化与继承

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题第10篇文章,我们继续来看golang当中的面向对象部分. 在上一篇文章当中我们一起学习了怎么创建一个结构体,以及怎么 ...

  7. C语言中的结构体,结构体数组

    C语言中的结构体是一个小难点,下面我们详细来讲一下:至于什么是结构体,结构体为什么会产生,我就不说了,原因很简单,但是要注意到是结构体也是连续存储的,但要注意的是结构体里面类型各异,所以必然会产生内存 ...

  8. Go语言基础之结构体

    Go语言基础之结构体 Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念.Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性. 类型别名和自定义类型 自定义类型 在G ...

  9. C语言第九讲,结构体

    C语言第九讲,结构体 一丶结构体的定义 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据.结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种 ...

随机推荐

  1. 一个简单的JAVA C/S多线程应用

      import java.net.*;import java.io.*;public class simpleServer{private static ServerSocket serverSoc ...

  2. 1006. Sign In and Sign Out (25)

    At the beginning of every day, the first person who signs in the computer room will unlock the door, ...

  3. About vector

    今天打vector又打炸了不!高!兴! vecotr头文件 #include<vector> 定义域 using namespace std; 或using std::vector; 初始 ...

  4. DISCUZ官方论坛模仿开发日志(二)

    接上一次日志:http://www.cnblogs.com/gcs1995/p/4091159.html 从上次写下项目简要分析到现在差不多两个月时间了,这两个月时间学习了很多新技术: 数据库技术: ...

  5. WeX5的简单介绍及UI的简单讲解

    WeX5的简单介绍及UI的简单讲解 (2016-01-13 14:49:05) 标签: it 分类: WeX5的初步自学 一.WeX5的简单讲解 1.WeX5是前端快速开发框架,可开发跨端运行应用.是 ...

  6. SPSS数据分析—对应分析

    卡方检验只能对两个分类变量之间是否存在联系进行检验,如果分类变量有多个水平的话,则无法衡量每个水平间的联系.对此,虽然可以使用逻辑回归进行建模,但是如果分类变量的水平非常多,就需要分别设定哑变量,这样 ...

  7. [iOS]浅谈NSRunloop工作原理和相关应用

    一. 认识NSRunloop  1.1 NSRunloop与程序运行 那么具体什么是NSRunLoop呢?其实NSRunLoop的本质是一个消息机制的处理模式.让我们首先来看一下程序的入口——main ...

  8. 手机版web相关meta配置

    若页面需默认用ie兼容内核,增加标签: 若页面需默认用ie标准内核,增加标签: --> 页面标题

  9. Nodejs express中创建ejs项目,解决express下默认创建jade,无法创建ejs问题

    最近在看<Node.js开发指南>,看到使用nodejs进行web开发的时候,准备创建ejs项目遇到问题了, 书上命令为: express -t ejs microblog 可是执行后,仍 ...

  10. Android的常用adb命令

    第一部分:1. ubuntu下配置环境anroid变量:在终端执行 sudo gedit /etc/profile 打开文本编辑器,在最后追加#setandroid environment2. 运行E ...