C语言学习014:结构化数据类型
struct的基本使用
#include <stdio.h> //定义数据结构
struct fish{
const char *name;
const char *species;
int teeth;
int age;
}; void catalog(struct fish f){
printf("%s is a %s with %i teeth. He is %i\n",f.name,f.species,f.teeth,f.age);//访问结构的字段
} int main(){
//声明结构变量
struct fish snappy={"Snappy","Piranha",,};
catalog(snappy);
return ;
}
将结构变量赋值给另一个结构变量时,计算机会创建一个全新的结构副本,然后将每个字段都复制过去;如果结构中有指针,那么复制的仅仅是指针的值
struct fish snappy={"Snappy","Piranha",,};
struct fish gnasher=snappy;
结构还可以嵌套使用
#include <stdio.h> struct preferences{
const char *food;
float exercise_hours;
}; struct fish{
const char *name;
const char *species;
int teeth;
int age;
struct preferences care;//嵌套在fish中的结构体preferences
}; void catalog(struct fish f){
printf("%s is a %s with %i teeth. He is %i\n",f.name,f.species,f.teeth,f.age);//访问结构的字段
//访问结构体中的结构体
printf("%s like to eat %s\n",f.name,f.care.food);
printf("%s like to exercise %f hours\n",f.name,f.care.exercise_hours);
} int main(){
struct fish snappy={"Snappy","Piranha",,,{"Meat",7.5}};
catalog(snappy);
return ;
}
aaarticlea/png;base64,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" alt="" />
更简单的创建结构变量
通过使用typedef为结构命名,这样在创建结构变量的时候可以省去struct关键字
#include <stdio.h> typedef struct cell_phone{
int cell_no;
const char *wallpapaer;
} phone;//phone为类型名(cell_phone的别名) int main(){
phone p={,"sinatra.png"};
printf("number %i\n",p.cell_no);
return ;
}
我们还可以直接省去结构的名字定义结构,这也就是所谓的匿名结构
typedef struct {
int cell_no;
const char *wallpapaer;
} phone;
传递结构指针
当将一个结构赋值给另一个结构,我们知道是创建一个新的副本;如果我们希望通过被赋值的结构更新原来的结构,就需要用到结构指针
#include <stdio.h> typedef struct {
int cell_no;
const char *wallpapaer;
} phone; int main(){
phone p={,"sinatra.png"};
phone p2=p;
p2.cell_no=;
printf("p.cell_no:%i p2.cell_no:%i\n",p.cell_no,p2.cell_no);
phone* p3=&p;//将结构p的地址赋值给*p3
(*p3).cell_no=;
printf("p.cell_no:%i p2.cell_no:%i p3.cell_no:%i\n",p.cell_no,p2.cell_no,(*p3).cell_no);
return ;
}
aaarticlea/png;base64,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" alt="" />
因为我们常常会把(*p2).wallpapaer错误的写成*p2.wallpapaer,它们并不等价,所以C语言开发者设计了更简单的表示结构指针的方法
int main(){
phone p={,"sinatra.png"};
phone* p2=&p;
printf("p2->wallpapaer:%s = (*p2).wallpapaer:%s\n",p2->wallpapaer,(*p2).wallpapaer);//
return ;
}
aaarticlea/png;base64,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" alt="" />
C语言学习014:结构化数据类型的更多相关文章
- ElasticSearch 5学习(10)——结构化查询(包括新特性)
之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...
- ElasticSearch权威指南学习(结构化查询)
请求体查询 简单查询语句(lite)是一种有效的命令行adhoc查询.但是,如果你想要善用搜索,你必须使用请求体查询(request body search)API. 空查询 我们以最简单的 sear ...
- 〖C语言学习笔记 〗(二) 数据类型
前言 本文为c语言的学习笔记,很多只是留下来占位的 数据类型 助记:变量就是在内存中挖个坑并给这个坑命名,而数据类型就是挖内存的坑的尺寸 基础类型 整数类型: short int int long i ...
- C语言学习之结构体
前言 一直以来,C语言的学习都在入门阶段,只用到数组.函数.循环.选择.位运算这些基本的知识,较少用到指针.预处理.结构体.枚举类型.文件操作等这些C语言的精髓内容,现在想想真不敢说自己熟练掌握C语言 ...
- C语言学习笔记--结构体
结构体定义三种方式: #include<stdio.h> //第一种定义方法 struct point { int x; int y; }; struct point p1,p2; //第 ...
- 【原创】go语言学习(二)数据类型、变量量、常量量
目录 1.标识符.关键字2. 变量量和常量量3. 数据类型4. Go程序基本结构 标识符.关键字 1.标识符是⽤用来表示Go中的变量量名或者函数名,以字⺟母或_开头.后⾯面跟着字⺟母 ._或数字2. ...
- c语言学习笔记 - 结构体位域
在学习结构体的时候遇到了位域这个概念,位域主要是为了节省内存空间,比如用一个32位,4个字节的int存储一个开关变量时,会造成空间浪费,于是干脆就考虑在这个32划分不同的区域来存储数据,例如划出1位存 ...
- C语言学习1——结构体剖析
一、定义结构体变量的方法 1.1先声明结构体类型在定义变量名 例如: a.声明结构体类型 struct student { int num; char name[20]; char sex; int ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 数据类型
使用编程语言进行编程时,需要用到各种变量来存储各种信息.变量保留的是它所存储的值的内存位置.这意味着,当创建一个变量时,就会在内存中保留一些空间. 可能需要存储各种数据类型(比如字符型.宽字符型.整型 ...
随机推荐
- Jasmine测试ng Promises - Provide and Spy
jasmine提供了很多些很实用的处理Promises的方法,首先我们来考虑下面的这个例子: angular.module("myApp.store").controller(&q ...
- 浅谈Excel开发:五 Excel RTD函数
上文介绍了Excel中的UDF函数,本文介绍一下同样重要的RTD函数.从Excel 2002开始,Excel引入了一种新的查看和更新实时数据的机制,即real-time data简称RTD函数 ...
- java笔试题(金山网络)
今天参加金山的校园招聘,java笔试,回来仔细研究实现一下: 题目1:工厂两条生产线,三个工人,生产线上可以最多存放m个产品,当生产线满时,机器停止生产,等产品线不满时才继续生产,每条产线上一次只能允 ...
- 将整数转换成二进制的java小程序
首先我们知道,将整数转换成二进制是将整数除二取余将最后除得的数和得到的余数从下向上写,组成得到的二进制数. java程序实现如下: public class ChangeToErjinzhi { pu ...
- C#Color对象的使用介绍及颜色对照表
原文地址 http://blog.sina.com.cn/s/blog_3e1177090101bzs3.html 今天用到了特转载 NET框架中的颜色基于4种成份,透明度,红,绿和蓝.每一种成份都 ...
- Markdown入门基础
// Markdown入门基础 最近准备开始强迫自己写博文,以治疗严重的拖延症,再不治疗就“病入骨髓,司命之所属,无奈何”了啊.正所谓“工欲善其事,必先利其器”,于是乎在写博文前,博主特地研究了下博文 ...
- css_04之显示、定位
1.显示方式:display:取值:none(隐藏,不占页面空间,脱离文档流)/block(元素变为块级)/inline(元素变为行内)/inline-block(元素变为行内块): 2.显示效果:v ...
- How Google TestsSoftware - Part Two
In order for the "you buildit, you break it" motto to be real, there are roles beyond the ...
- ROC曲线与AUC值
本文根据以下文章整理而成,链接: (1)http://blog.csdn.net/ice110956/article/details/20288239 (2)http://blog.csdn.net/ ...
- 如何查看某个查询用了多少TempDB空间
最近帮助客户调优的过程中,发现客户的TempDB存在非常大的压力,经过排查是发现某些语句对TempDB的巨量使用所导致. 在SQL Server中,TempDB主要负责供下述三类情况使 ...