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,iVBORw0KGgoAAAANSUhEUgAAAoUAAABGCAIAAAA1qHmwAAAIRElEQVR4nO3dWYLcNBCHcd+Jk/DAvsMxuEgIW4BcgSzw4jOEBA6QM4QM2eBhugePpSr9S5Ytd8/3e3Kr5aqSeqKazkwnw1d3//39rzdvvf31AAAANndxcfH06dOBfgwAQEf0YwAA+luxH4/Xpc/6t8wGGxams4of5KqcCDvUZb3OV0irUMOZvl4AzkmDfqwcf0qLnQ7uoSVfJS1WK8bZuS7rtZL6xYRCRas6ldcLwJmJ9ePsuwexuU7PymIQMcuqWmU8lfO9y3rX6McLncrrBeDMZPqx1TIHox8PbvvMRqtrt9kg6alt1e+sS0lXjOOPOwHF+FEnt15xfG/1A0AT8348PYOWnIbTQ8151hnxs1h1Rq/9RE5LcFaUfUo84hfWWdwfMY5fmB+/Yr2zW5zxvdUPAK14/TgqPeOscy3NouS1zlDnbA3FD92iL0Epb0mdxThizL7rtb5gZuN7qx8AWon14+LJmB6js/Hsw4UTlAO04mCNnu/WeOh8b9UAKppK9/VGX1OxQv/ZhfUDQCuHfvzl3X9/E/6+ejxyIo4Ts0HrYTqoz5/l6nW+i8VnnxInh+xzvU5Y63VMt2hX9QNAK/N+PET+htAyO0nTA85KkR3Xz3QnSHRdzmRrCU7xo3v0L6mzbgmhyQ3X66cecr0wHd9b/QDQRKYfnwQOTQDAOTnVfjy0ex8JAEB3J9yPAQA4G/RjAAD6O/bjX+jHAAB0Qz8GAKA/+jEAAP1N+vGfzT5/vKWN67Q+zLp2PZu9ImKWunqyd+3q661VJc0/j9dwf3ay1QBm5v345D7Xu32R/hatV0/HfpzNG62n+O2LHrBhZ8oOnnE/3s+3PgBmTr4fb6/XFvV6Oay8oXqUIGLAtp1ppfj7/HM0TvSuBcCc14+nxuusp2aDQ/L9uDU+xI+wUD0Vcfz51nV2UdMl+3nH67J5lThK8aH6rafSmEpepwAlTrFU65bm6/LrzK7LqtMPJa5LKWnJugCsx/v58XSec75k5zi3RK99YtKKUP406yh0tk65xal/eruY2ipeqbYYtlhPdrIV39qc4hLSwdB+LlyXX2S6LqceJWD2oRKnOi+AzWT68SX9z791nkaPyLojI50ZPW6s+vWMSj1jcr5n8xb32boW659W4lSrrDf0ehUni5vv327tZ3Z/mqxLKVKsRw9YUVuat25dANaj/vw4er3wdv28sGaKESqS+tPEc7PVfkbrn94oVqvscDF1cfLCV7ziy6DJupQimwdUxitCAehrR/346mHovBCTKreLef1p6bPZ+a32c0n9xcL8+aHU/mSxcqeeJfupr2s80ovU69EDLolTMR/ANtTPH4uHVDrNCuUcbaEjLw3lB3fiKKmd4Nl6lPmD0Ruyi/KfUlZtTc7Wn83u1+PnTWda+6OECsVPU0TXpZeqBBGXPCbq4iy5C8AGzJ8fL2f9mffPAk4KAMANtFY/jr5Z4dt2AMBNtuL7YwAAIKIfAwDQH/0YAID+6McAAPR36Mdf0I8BAOgn049P5Ved/TqtD31uVV1n2eV3qwYAUDLvx+k/ONCzOoH+KeeGy+m1LXre6fcfy78X2f+XAQCcurPtx0tmbhNn1bxjzgZ5AQB1vH485Zzs2XHrzZnzpq3uWwGxHid+qGM5TS4Up1inE1xJkc4vrrdJXgBAHe/nx9N56YGexsoe5cuvfWIxQ/KtQHXS7LRonIX7qRc5W/LaeQEAdczfr3YO5exTV4q3RK99YlOZ1WkVryTNTosW7+RV9jNa5NXDtfMCAOqoPz+OXi+8Xe8B1sx0fNaToon8jNGYStlL+qJ179p5AQB1dtSPrx4uaTzOeDavU0wxo7ioYtnR/YzGj9a8JC8AoI76+ePieW0d91aodDybyzEmnPHsnHR+MWm65Gw9oSBWnMHdaiV49uGqeQEAdQ79+HP+/2MAAPpZqx8X34QtfHMJAMA5+b8fP+TfrwYAoBP6MQAA/dGPAQDo79iPf6YfAwDQDf0YAID+Mv34VH7V2a+TT9D6VtqNMSc033pqs3G/zvIWAECVeT+eHjoncQBZRabjDZez/20pWunFzfa8ijKsOGuPV5QKAE2cbT9eMnObOGdpjX48Hm0wXlEqADRx6Mef5frx1Hid9dRscEgOO2t8yB2RygLEepz41nwnnbPkaOXOJih1TkfEelqN62usmDBbVLrGlcaVUmeTsxGmD9NrPQ6Am+OqH79Jf348nWedL9Yc55botU8sZjDO04qk2WnROM78aJ2z+f691iravij6/PG67KLSNa43rpSajSNep/f6cQDcHMd+/NObh0/4/4+lpNlp0eL9vKE6pyPphb4KZ12h/XGi6bfMMs4u1hsPlWcNOteD8XqJNQA4Y4d+/Omd15f9OHq+FM+dJqEc1sx0vNUhmL0lGtOfMz2yi/OL9YQK0PNWBNfvmu3A7LVbbzxUnjXoXBdz1W0dgDNw6Mef3Hn98Mlr/v9jJW/oLFbKtvatYp+V+MUgS9blzxyPQnkHY0/WGBcXlY0TXUsxOIAb5diPf3x12Y8HoykWzxfreLJCpePZXI4x4Yxn56Tzi0nTJWfrCQVJNyf7sLiZSvxB27cl60pXkYaqqHOzcWdFY+TrZzo4u8hm1IsBcJYO/fjjH14+OPbjVqyTxT9xOI8AADfQoR9/1LofF980iOMAANwEx378/YsHj1/x71cDANDFoR9/+N0/9+nHAAB0cujHH3x7cf/xS/oxAABdHPrx+7ef3/+DfgwAQB+Hfvze7ef36McAAHRy6MfvfvP3vUf0YwAA+jj241vP7j16QT8GAKCLQz9+59azX+nHAAB0ctmP/wORSub4C0cxBgAAAABJRU5ErkJggg==" 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,iVBORw0KGgoAAAANSUhEUgAAAoUAAAA6CAIAAABJSLQKAAAGdklEQVR4nO3dWXLjNhCAYV0pk4MkqRpvI1K5RpZ7xKtIn8KW33SGiX0Tb1qcyoNsjUwQYGMhAYr/V3qQ2xTQ6JG6Q8eTjCbXy98/HncP659++XMEAAA6xjwGACC+yfVywjwGACCuSck8BgAgNuYxAADxbebx5sE8BgAgjkm5fH8wjwEAiIV5DABAfD/mcRl+Hs8/U79rfkklGDAxH7rjYCNifQzvNP+U+HMH0K4g89gwWYVfqsH0R3LsLNIVpT7bTXXvnFAj2WcFANCynce1dwnC4brbFhsXEe4SRTqZpIl5DADWauexbmSO9D+1M4zP2tXcxm3tImq31eVvOJdhL0Pyunx0QZ98HK5vdZ2U6yOM9+VcAAZBnce7bcKqZRial+G7hoh5F12ets+FJ1KfV9JoOx+36ysc1nFIKWJ9Klsb4n05F4ChMM9jW7XNS21b6pe1Ecn65ue26/ts59aLK1USJuNDUivPpeLWp/ISXbwv5wIwFLbzuLGJqO2vEq/90vMCw0aGBRt10JfdkvHhk4Nwqej18VwzqXMBGArbn1fPPxjWnO+oBHVfqkH59ZW9AvZEq6V8cpDU2SF/q0MFXKqD+hiSqZROF+/LuQAMhe3vcwlVOqDag3Rb1MYbM6m9Xrh447K6/NWtG5MX5qnu4pa/5Fyh1um4PuZ8dPuqW/TiXAAGodX/HkirDP2ujS2g2tf67Ou5ACStv/N41PJ9BjcxZvtan309F4DU9XoeAwCwJ5jHAADElzOPAQCIjnkMAEB8ebncPJjHAABEs53HeYfzWPcrrFF+tXWuCBv3TMn9YPbrR//VYt3WoeIAkK7deTzr9v44kWaa2gxQZ7z/mo0bSeJt0/2jQKg4ACRtaPNYbdbMY2E84KaGITqX3bLbxgEgdeo83vYyeV9za46e82D+mXBfNR4qPdsZIKnzEOo/UkoRPA4APVB7f7zbzhpbm+7ixkWCzAOHfWvXUedEqLjDEeTJGxbpV/3bew4A/RB2HqvxXVYvbMy8jb5sm1JLR5Cv0JhD+vVX85x//rGBZxwA+qHtedzGC9XLJM93I7r1bVPq4AhWi1jlQP0BICG281jtp259WRc0xA2X+cwD23Wczys8Qtv5175QEpck75C/T0qeRwCAhBjmcW3rNAcd4mr71r2qwtD3hSsEyV8Sl+wrLELwPOVb1yavPneog/8pJHEASJoyj/8YJXZ7oQ6JpNLz0YuD7HH9ASAh6jym53aDOgMAfsiKZf7xmN2/3x8DAIBOZdNlxjwGACCubLrIikVeLPJiMbtfMY8BAIhgPF2Mi8W4WGTMYwAAYsmmi/cH8xgAgFiy6fL90eG/P07wb47q9g0Vd0umpTokWP/dBNqLW6UxqPon9f4HBmo8XWbFavOY3e///28xSCatZr67SKulSKf+u/tGHwkDrH9S739guMbFMitWWbnKy/Xs4e3Lvs9jtVmn1oz2ex40DtHKt0LFfbL1X8dq8YG//4HhyopVXq7zcj25frt7ePvy61/bz5W8r7k1R88P9vwz4b7p9CNJnYdQ/5FSiuBxQ/66lCrXSJbqaf1DpSdMG4BWVqzycjUp15Pr9WYejyxv0XQXNy4SpB857Fu7jq5P+ccdjiBP3rBIv+rf3nOHrUc7f5rOi/Sr/up5Q8UBSKn3xyOPeazGDR/RpPpRe88dtpavYLiyX/VXUw0VdzhC7QWSRcznsnqheVND8o2H8lwn1L4AqsbTVVass3Kdl2+zh/9+/u3vUdB53MYL1cvkfUFtjhH7UZB21vf6+6TU0hGs1ul7/W3XcdsXQLPx1TKbrvJinZdvdw9vjfPY//Nc+0JJ3HBZT/tR7Uvazr/2hZK4JHmH/H1SauMIQ6u/7TrO5wXQ4NvVYvNXnvJyXZnH6kd3pOmnjRcb4urHWPeqCsPnX7hCkPwlccm+wiIEz1O+dW3y6nOHOvifQhI37yjMP3iGu9/VxQ3Jq8+tKuCfvyQOQOTk8nU7kmd198fRqU0qqfR89OIg1D+uPa4/gE+OL19Prl6/TRfjj3nMZ74b1Dku6g8gLccXL9tb5Nn9enN/DAAAOnV08bIdybfMYwAAojg8fz46fz66eDm5fL29XzGPAQCI4ODs6fDs6ej8+fji5fZf5jEAADFs5vHh+fPRxcsN8xgAgCgOTh+3I/nmO/MYAIAYvv7z+PX08eD06fDs6eb7knkMAED3/gceOFwwx9AkkQAAAABJRU5ErkJggg==" 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:结构化数据类型的更多相关文章

  1. ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...

  2. ElasticSearch权威指南学习(结构化查询)

    请求体查询 简单查询语句(lite)是一种有效的命令行adhoc查询.但是,如果你想要善用搜索,你必须使用请求体查询(request body search)API. 空查询 我们以最简单的 sear ...

  3. 〖C语言学习笔记 〗(二) 数据类型

    前言 本文为c语言的学习笔记,很多只是留下来占位的 数据类型 助记:变量就是在内存中挖个坑并给这个坑命名,而数据类型就是挖内存的坑的尺寸 基础类型 整数类型: short int int long i ...

  4. C语言学习之结构体

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

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

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

  6. 【原创】go语言学习(二)数据类型、变量量、常量量

    目录 1.标识符.关键字2. 变量量和常量量3. 数据类型4. Go程序基本结构 标识符.关键字 1.标识符是⽤用来表示Go中的变量量名或者函数名,以字⺟母或_开头.后⾯面跟着字⺟母 ._或数字2. ...

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

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

  8. C语言学习1——结构体剖析

    一、定义结构体变量的方法 1.1先声明结构体类型在定义变量名 例如: a.声明结构体类型 struct student { int num; char name[20]; char sex; int ...

  9. 吴裕雄--天生自然C++语言学习笔记:C++ 数据类型

    使用编程语言进行编程时,需要用到各种变量来存储各种信息.变量保留的是它所存储的值的内存位置.这意味着,当创建一个变量时,就会在内存中保留一些空间. 可能需要存储各种数据类型(比如字符型.宽字符型.整型 ...

随机推荐

  1. STC12C5A60S2笔记6(中断)

    1. 基本特性 1) 中断源 STC12C5A60S2共有十个中断源,每个中断源可设置4类优先级:当相同优先级下各中断优先级由高到低依次如下: 1.1)INT0(外部中断0) 中断向量地址 0003H ...

  2. 作业三:PSP记录耗时情况

    PSP2.1 Personal Software Process Stage Time planning 计划 15min Estimate 估计这个任务多久完成 130min Developing ...

  3. 【读书笔记】Ninject 在MVC5中的使用

    从MVC3中就开始接触Ninject这个IOC工具.也一直是MVC Framework系列书籍中推荐的IOC工具,当然还有优秀的Autofac等.性能和使用上面个有千秋.下面先看一下Ninject的使 ...

  4. git版本管理策略及相关技巧(A)

    公司几乎所有的项目都是使用 git 仓库来管理代码,以前对 git 只有些肤浅的了解,每次提交代码或者上线的时候总是会提心吊胆,生怕出现一些未知的问题.经过三个月的踩坑和填坑, git 操作颇显成熟. ...

  5. JavaScript思维导图—DOM基本操作

    JavaScript思维导图-来自@王子墨http://julying.com/blog/the-features-of-javascript-language-summary-maps/ DOM基本 ...

  6. 在.net中使用aquiles访问Cassandra(三)

    之前我们实现了如何修改数据,还需要相应的删除动作.删除方式会有几种情况,以下分别一一介绍.   1.批量删除,适应于多行多列的情况. public void Remove(string columnF ...

  7. 用C#Winform写个简单的批量清空文件内容和删除文件的小工具

    用C#Winform写个简单的批量清空文件内容和删除文件的小工具 本文介绍这个简单得不能再简单的小项目.做这个项目,有以下目的. 1 当然是做个能用的工具 2 学习使用Github 关于用VS2013 ...

  8. Javascript函数节流

    最近在做网页的时候有个需求,就是浏览器窗口改变的时候需要改一些页面元素大小,于是乎很自然的想到了window的resize事件,于是乎我是这么写的 <!DOCTYPE html> < ...

  9. save与persist差别

    唯一差别: 在没提交事务情况下 save会产生insert语句,然后因为没提交事务进行回滚. 而这种情况,persist是连insert语句都不会产生.

  10. Devexpress 等待窗体

    加载窗体以及等待窗体 程序加载时,需要等待加载完成后在显示 窗体显示顺序 1. 给用户看的等待窗体 2. 加载完成后的主窗体 代码如下: 1. 等待窗体代码 #region using using S ...