结构体与函数的区别:

  1.函数是由相同数据类型的变量组成.

  2.结构体可以有不同数据类型组合。可以包含char,int,float,数组等类型.

struct 结构名称 {

  数据类型 成员;   注意必须是以分号隔开

  ...

};

//创建一个构造体

struct student {

  int age;

  char name[45];

  char gender;

  float score;

};

// 创建结构体变量同时为其赋值

struct student stu ={18,"luoshuai",'m',87,5};

但是:struct student stu1;

stu1={18,"luoshuai",'m',87,5};

// 报错,如果在声明的时候,没有全部赋值,不可以再在后面进行全部赋值。

但是可以逐个的赋值

结构体访问成员变量的方式: 结构体变量名 . 成员变量名

struct student stu1;

stu1.age =18;

// stu1.name= "lihuahua";   字符串数组 或者数组都不能相互之间直接赋值使用函数。

strcpy(stu1.name,"luohuahua");

typedef   重命名。可以简化系统的数据类型名称

typedef int  Integer;

Integer score = 98;

//typedef和结构体组合使用,后面经常使用

typedef struct {

  int age;

  char name[30];

  char gender;

  float weight;

} Cat ;

// 结构体的嵌套

typedef struct{

  int year ;

  int mouth;

  int day;

} Birthday;

typedef struct{

  int age;

  char name[30];

  Birthday bir;

} People;

People p1 = {"jiesi",29847901093,{1990,6,12}};

printf("%d\n",p1.bir.year);

注意,字符串数组或者数组都不能直接赋值给其他变量。

但是结构体相互之间是可以的。所以如果你想交换数组,可以使用结构体。

typedef  struct {

  int age;

  float weight;

  char arr[34];

} Baby;

Baby ba1 = {1,23.5,{"myname","lover"}};

  Baby ba2 ={};    //一个空得结构体变量

ba2 =ba1;

printf("ba2:%d",ba2.age);  // 1

typedef struct {

  int age;         4字节

  double score ;   8字节

  char gender;     1字节

  char name[20];   20字节

} Student;

在面试中我们会遇到计算struct在内存占的空间,上面已经列出每个变量的内存字节占用,相加33个.

以最大的成员变量数据类型为单位,这里是Double的8字节最大,然后 8 * n >=  33 , n取值5才能满足,所以内存占用5*8=40个字节。

有五个学生,编程找出分数最高者:

typedef struct{

  int num;

  char name[50];

  float score;

  char gerder;

} Student;

Student stu ={

  {23,"luoshuai",78.3,'m'},

  {51,"luoting",98.5,'m'},

  {76,"luoteng",23.6,'w'},

  {96,"liruoxuan",67.9,'w'},

};

int count =sizeof(stu) / sizeof(Student);

for(int i = 0 ;i < count-1 ; i++){

  for (int j =0 ; j < count-i-1 ;j++){

      if( stu[j].score >  stu[j+1].score){

       //交换的是结构变量数组元素,不是里面的分数 temp是结构变量

         Student temp =  stu[j].score;

         stu[j].score = stu[j+1].score;

         stu[j+1].score = tem;

      }

  }

  printf("信息为%s,分数为%f \n",scores[i].name,scores[i].score);

}

C语言基础07的更多相关文章

  1. Java入门 - 语言基础 - 07.修饰符

    原文地址:http://www.work100.net/training/java-modifier-type.html 更多教程:光束云 - 免费课程 修饰符 序号 文内章节 视频 1 概述 2 访 ...

  2. javascript基础07

    javascript基础07 1.节点 元素.childNodes : 属性 只读 属性 子节点列表集合 元素.childNodes 只包含子节点,不包含孙节点 DOM节点的类型有很多种,w3c标准有 ...

  3. R语言基础:数组&列表&向量&矩阵&因子&数据框

    R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...

  4. Java学习总结(二)----Java语言基础

    1.     Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...

  5. C语言基础(转载自大海笔记)

    # C语言基础2015年03月26日10:04:411.    语言排行榜C——java——objective-C2.    进制:进制:进位机制.用普通的话讲,应该为人为的定义一种度量来标识一样东西 ...

  6. 01_C语言基础

    内容提要: 1. C语言概述2. 数据类型.运算符与表达式3. C语言程序结构 4. VC6.0使用练习 知识详解01:C语言的历史 1. C语言与其它语言比较 汇编语言: (1).可直接对硬件进行操 ...

  7. 2008技术内幕:T-SQL语言基础

    2008技术内幕:T-SQL语言基础 单表查询摘记 这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基础>,书中用到的案例数据库是这个 TSQLF ...

  8. 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB

    走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...

  9. D14——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...

随机推荐

  1. windows下配置Nginx+Mysql+Php7

    环境:Windows10 mysql-5.6.24-win32解压缩版    nginx-1.8.0    php7 1.Mysql安装 下载压缩文件之后解压缩至相应目录(我的目录是G:\wnmp\m ...

  2. PHP 中 const define 的区别

    在php中定义常量时,可用到const与define这两种方法,那他们到底有什么区别呢? 1.const用于类成员变量的定义,一经定义,不可修改.define不可用于类成员变量的定义,可用于全局常量. ...

  3. Onthink_项目后总结

    ---------------------------------------写代码不孤独__小小代(http://www.cnblogs.com/xiaoxiaodai/) 经过一段时间的沉寂,项目 ...

  4. Meteor Shower(POJ 3669)

    Meteor Shower Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12816   Accepted: 3451 De ...

  5. eclipse 使用mvn模块化开发

    1.创建maven父工程步骤:new-->other-->选择maven project-->next-->勾选create a simple project-->nex ...

  6. 从客户端(******)中检测到有潜在危险的 Request.Form 值。

    在 提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" .asp.net中的请求验证特性提供了某一等级的保护措施防止 ...

  7. SD/MMC卡初始化及读写流程

    二.MMC/SD卡的模型和工作原理 PIN脚.SD卡总线.SD卡结构.SD卡寄存器.上电过程 SD卡寄存器:  OCR:操作电压寄存器: 只读,32位 第31位: 表示卡上电的状态位   CID: 卡 ...

  8. 优盘文件系统(FOR C)

    优盘上的数据按照其不同的特点和作用大致可分为5 部分:MBR 区.DBR 区.FAT 区.FDT区和DATA 区. 主引导记录(MBR) 绝对扇区号为:MBR_LBA=0x00000000 处是主引导 ...

  9. jQuery插件之Form

    一.jQuery.Form.js 插件的作用是实现Ajax提交表单. 方法: 1.formSerilize() 用于序列化表单中的数据,并将其自动整理成适合AJAX异步请求的URL地址格式. 2.cl ...

  10. WPF/ArcGIS Engine三维开发和EVC3/4升级到VS项目建议(转)

    系统环境:Windows 7 专业版,Visual Studio 2010,ArcGIS Engine 9.3 1.创建项目 创建一个WPF的项目,必须选择.Net framework 3.5(AE9 ...