C语言基础07
结构体与函数的区别:
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的更多相关文章
- Java入门 - 语言基础 - 07.修饰符
原文地址:http://www.work100.net/training/java-modifier-type.html 更多教程:光束云 - 免费课程 修饰符 序号 文内章节 视频 1 概述 2 访 ...
- javascript基础07
javascript基础07 1.节点 元素.childNodes : 属性 只读 属性 子节点列表集合 元素.childNodes 只包含子节点,不包含孙节点 DOM节点的类型有很多种,w3c标准有 ...
- R语言基础:数组&列表&向量&矩阵&因子&数据框
R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...
- Java学习总结(二)----Java语言基础
1. Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...
- C语言基础(转载自大海笔记)
# C语言基础2015年03月26日10:04:411. 语言排行榜C——java——objective-C2. 进制:进制:进位机制.用普通的话讲,应该为人为的定义一种度量来标识一样东西 ...
- 01_C语言基础
内容提要: 1. C语言概述2. 数据类型.运算符与表达式3. C语言程序结构 4. VC6.0使用练习 知识详解01:C语言的历史 1. C语言与其它语言比较 汇编语言: (1).可直接对硬件进行操 ...
- 2008技术内幕:T-SQL语言基础
2008技术内幕:T-SQL语言基础 单表查询摘记 这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基础>,书中用到的案例数据库是这个 TSQLF ...
- 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB
走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...
- D14——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...
随机推荐
- 解决pip安装时 UnicodeDecodeError 问题
在装django的时候用pip安装就出现了问题,一大堆的红字,然后联想到很多次用pip安装都以失败告终,于是今天抽空看了看出现问题的原因. 情况如下图:
- django最简单表单入门
两个html页面,存放于某个应用下的templates文件夹下. index.html 提交 点击“提交”按钮后,会调入第二个页面hello.html显示文本框的内容 原理是通过form的action ...
- oc语言--面向对象的三大特性
一.封装 1.什么是封装 在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将对象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的 ...
- 观点:哪些人适合做FPGA开发?(转)
原文:http://xilinx.eetrend.com/blog/561 FPGA目前非常火,各个高校也开了FPGA的课程,但是FPGA并不是每个人都适合,FPGA讲究的是一个入道,入什么道,入电子 ...
- 纯CSS实现三列DIV等高布局
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> &l ...
- Apache监控
Apache性能监控 http://www.cnblogs.com/fnng/archive/2012/11/11/2765463.html 要监控apache的性能,我们需要修改配置文件,允许查看a ...
- Socket基础(一)
OSI七层模型: 物理层:比特,数据链路层:帧,网络层:包,传输层及以上:报文.因为不用,不做详解. TCP/IP模型:这个常用,详解. 链路层:负责在两个相邻节点上线路上的无差错传输数据,以帧为单位 ...
- [破解] DRM-内容数据版权加密保护技术学习(中):License预发放实现
在上一篇文章里实现了对媒体文体的DRM加密,现在一起来实现License的预发放. 所谓预发放就是在播放媒体文件之前先获取到License,License获取成功后,可直接在电脑上进行媒体文件的播放. ...
- IOS 快速排序法
- (NSMutableArray *)QuickSort:(NSMutableArray *)list StartIndex:(NSInteger)startIndex EndIndex:(NSIn ...
- Android应用程序组件Content Provider的启动过程源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6963418 通过前面的学习,我们知道在Andr ...