<div class="articalTitle">
<h2 id="t_3e2d2eb60100fjsu" class="titName SG_txta">关于struct和typedefstruct(转载)</h2>
<span class="time SG_txtc">(2009-10-10 15:15:25)</span>
<div class="turnBoxzz">
<a id="quote_set_sign2" class="SG_aBtn SG_aBtn_ico SG_turn"><cite><img class="SG_icon SG_icon111" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" alt="" width="15" height="15" align="absmiddle">
转载</cite>
</a>
</div>
</div>
<table border="0"><tbody><tr>
<td class="blog_tag">
<span class="SG_txtb">标签:</span>
<h3>
<a href="http://uni.sina.com.cn/c.php?t=blog&k=%D4%D3%CC%B8&ts=bpost&stype=tag" target="_blank">杂谈</a>
</h3>
</td>
<td class="blog_class">
<span class="SG_txtb">分类:</span>
<a href="http://blog.sina.com.cn/s/articlelist_1043148470_3_1.html" target="_blank">programing</a>
</td>
</tr></tbody></table>
<p></p>
<p><span style="color: #940000;">1 首先:</span>
<br>
在C中定义一个结构体类型要用typedef:<br>
typedef struct Student<br>
{<br>
int a;<br>
}Stu;<br>
于是在声明变量的时候就可:Stu stu1;<br>
如果没有typedef就必须用struct Student stu1;来声明<br>
这里的Stu实际上就是struct Student的别名。<br>
另外这里也可以不写Student(于是也不能struct Student stu1;了)<br>
typedef struct<br>
{<br>
int a;<br>
}Stu;<br>
但在c++里很简单,直接<br>
struct Student<br>
{<br>
int a;<br>
};<br>
于是就定义了结构体类型Student,声明变量时直接Student stu2;<br>
===========================================<br><span style="color: #940000;">2其次:</span>
<br>
在c++中如果用typedef的话,又会造成区别:<br>
struct</p>
<div id="sina_keyword_ad_area2" class="articalContent ">
Student<br>
{<br>
int
a;<br>
}stu1;//stu1是一个变量<br>
typedef
struct
Student2<br>
{<br>
int
a;<br>
}stu2;//stu2是一个结构体类型<br>
使用时可以直接访问stu1.a<br>
但是stu2则必须先 stu2 s2;<br>
然后
s2.a=10;<br>
===========================================<br><span style="color: #940000;">3</span>
掌握上面两条就可以了,不过最后我们探讨个没多大关系的问题<br>
如果在c程序中我们写:<br>
typedef struct<br>
{<br>
int num;<br>
int age;<br>
}aaa,bbb,ccc;<br>
这算什么呢?<br>
我个人观察编译器(VC6)的理解,这相当于<br>
typedef struct<br>
{<br>
int num;<br>
int age;<br>
}aaa;<br>
typedef aaa bbb;<br>
typedef aaa ccc;<br>
也就是说aaa,bbb,ccc三者都是结构体类型。声明变量时用任何一个都可以,在c++中也是如此。但是你要注意的是这个在c++中如果写掉了typedef关键字,那么aaa,bbb,ccc将是截然不同的三个对象。
</div>
<div class="articalContent "><br></div>
<div class="articalContent "><br></div>
<div class="articalContent "><br></div>
<div class="articalContent "><br></div>
<div class="articalContent ">
<div id="sina_keyword_ad_area2" class="articalContent ">
<div class="articalTitle">
<h2 id="t_3e2d2eb60100fjtk" class="titName SG_txta">结构体成员的访问</h2>
<span class="time SG_txtc">(2009-10-10 16:06:09)</span>
<div class="turnBoxzz">
<a id="quote_set_sign2" class="SG_aBtn SG_aBtn_ico SG_turn"><cite><img class="SG_icon SG_icon111" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" alt="" width="15" height="15" align="absmiddle">
转载</cite>
</a>
</div>
</div>
<div id="sina_keyword_ad_area" class="articalTag">
<table border="0"><tbody><tr>
<td class="blog_tag">
<span class="SG_txtb">标签:</span>
<h3>
<a href="http://uni.sina.com.cn/c.php?t=blog&k=%D4%D3%CC%B8&ts=bpost&stype=tag" target="_blank">杂谈</a>
</h3>
</td>
<td class="blog_class">
<span class="SG_txtb">分类:</span>
<a href="http://blog.sina.com.cn/s/articlelist_1043148470_3_1.html" target="_blank">programing</a>
</td>
</tr></tbody></table>
</div>
<div id="sina_keyword_ad_area2" class="articalContent ">
<p>一、如何定义结构体和初始化结构体</p>
<p>1.定义结构体</p>
<p>struct book {</p>
<p> char
title[MAXTITL];</p>
<p> char
author[AXAUTL];</p>
<p>
float
value;</p>
<p>}
library;</p>
<p></p>
<p>注解: 此处定义了一个名字为 library 的struct
book结构体,如果要继续定义新的结构体,如下</p>
<p>
struct book library2; //
这样便定义了一个新的strut book类的结构体 library2</p>
<p>2.初始化结构体</p>
<p>
两种方式,一种在定义结构体时初始化,另一种利用结构体成员运算符进行引用初始化(见下文)</p>
<p></p>
<p>二、如何引用该类结构体成员</p>
<p></p>
<p>在定义了 library 和 library2
两个结构体后,若想要访问其内部成员,应该使用结构体成员运算符点(.)就可以,例如</p>
<p></p>
<p>library.value =
9;
library.title</p>
<p></p>
<p>三、如何使用结构体指针访问结构体成员</p>
<p>1、结构体指针的定义和初始化</p>
<p>
struct book *it;</p>
<p>
it = &library;</p>
<p>2、使用结构体指针it访问结构体成员变量</p>
<p>
it->value = 9;</p>
<p>
it->title;</p>
</div>
</div>
</div>
分享到:
相关推荐
把c++的结构体、数据类型、函数定义转换成对应的c#表达,很强大。
大一c语言课程之c语言结构体。详细讲解了结构体数据类型,结构体变量的应用结构体数据类型的定义及其变量的申明和引用。
C中的结构体和C++中结构体的不同之处:在C中的结构体只能自定义数据类型,结构体中不...二、不同之处:结构体定义中默认情况下的成员是public,而类定义中的默认情况下的成员是private的。类中的非static成员函数有this
该工具可以将json内容一键转换成C++结构体定义,详情请查看我的博客: https://blog.csdn.net/liuguangzhou123/article/details/131752818
宏定义、结构体定义、函数声明以及全局变量定义放到一个head.h头文件中 函数的定义放到head.cpp中 main函数放到main.cpp中 然而却报错了,提示xxx变量在*.obj文件中已定义 问题出现的原因 为什么会出现这种...
C++中同样拥有C语言中的结构体,下面就来详解C++程序中定义struct结构体的方法,需要的朋友可以参考下
结构体的基本定义,是C++中一种最基本的数据类型
C++结构体类型的定义和初始化 有时需要将不同类型的数据组合成一个有机的整体,以供用户方便地使用。这些组合在一个整体中的数据是互相联系的。例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,都是这...
讲解区分结构体与结构体数组:结构体的引出、结构体变量的定义和引用、结构体数组
首先是结构体定义,一些基本的数据类型,C#与C++都是可以匹配的: [StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct Head { public ushort proMagic; //包...
VC笔记-如何从txt文本中读写结构体数据 VC笔记-如何从txt文本中读写结构体数据
C++ mysql查询 C++17编写 可以自动序列化到定义的结构体,支持json类型。代码风格良好,适合学习,也可直接使用。
目标:在一个线程运行的时候,主程序或者另一个线程,通过改变全局变量实时改变目标变量的做法,在linux下用make编译
学生成绩管理系统 课程设计 C语言 c++实现 有详细的注释 经验证可运行
在项目开发时,要调用C++封装的DLL,普通的类型C#上一般都对应,只要用DllImport传入从DLL中引入函数就可以了。但是当传递的是结构体、结构体数组或者结构体指针的时候,就会发现C#上没有类型可以对应。这时怎么办,...
结构体定义将会在C++程序中形成一种类型的概念,用于开发者创建其对象实例使用。C++中结构体定义的一般语法形式: struct struct_name //声明结构体名称为struct_name { typedata_name1; //结构体数据成员1...
1.软件:Dev-C++ 2.测试页面及结构体信息见我专栏《资源》下的《C语言系统资源测试》 3.代码一共298行 4.代码排版有序,易于新手下载学习 5.大家下载后有什么问题,欢迎私聊解决
在许多现实问题中,一组数据往往有很多的数据类型。比如,在一学生登记表中,有姓名,ID,手机号,它们有字符类型也有整型。 显然不能用一个数组来存放这一组数据。 当使用多个数组存放时 char ID[3][10]={"0101",...
C++结构体数组 一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成绩等数据)。如果有10个学生的数据需要参加运算,显然应该用数组,这就是结构体数组。结构体数组与以前介绍过的数值型数组的不同之处...