搜索
bottom↓
回复: 107

430编程C语言常识(IAR)(二)结构体与联合体

  [复制链接]

出0入0汤圆

发表于 2012-4-7 18:36:29 | 显示全部楼层 |阅读模式
本帖最后由 lcofjp 于 2012-4-8 10:17 编辑

结构体与联合体是C语言的常见数据类型,可对C的基本数据类型进行组合使之能表示复杂的数据结构,意义深远,是优异代码的必备工具。
一.        struct与 union的基本用法,在语法上union与struct相同,因此只以struct为例
1.1        基本用法:
  1. struct AA{ int a; int b;}; //结构体的声明和定义
  2. struct AA s1; //变量的声明和定义
  3. s1.a=3; //变量的使用:
复制代码
1.2        在声明结构体的同时定义变量:
  1. struct AA{int a; int b}s2={1, 2}; //此处AA为可选项,初始化部分为可选
  2. s2.a=5;                 //变量的使用
复制代码
1.3        使用 typedef 来简化struct的类型说明:
  1. typedef struct AA{int a; int b;}SAA;
  2. SAA s3, s4;         //变量的声明和定义
  3. s3.a=8; //变量的使用
复制代码
1.4 使用时尤其注意后面的分号,必不可少;
二.        struct 与 union的区别
2.1 struct中的成员是按顺序依次排列,互相独立,在排列时引入了对齐问题(2.2);而union中的成员共用一块内存,起始地址都是相同的,即union中的成员是对同一地址的多个引用、对同一地址的多种表达方法。
2.2 struct的对齐问题
对齐问题即struct中每个成员起始地址的分配。为了可以快速访问到每个成员,(以EW430为例)编译器根据成员的类型放到合适的地址上,默认为2字节对齐。如:
Struct AA{char c; int d;}aa;
假设aa被分配在地址N上,并且N为偶数,则aa.c的地址为N,aa.d的地址为N+2,而N+1地址未使用被浪费了。
对齐字节大小的指定:通过#pragma pack(n)来指定对齐字节的大小,n为某些常量(EW430中可取1,2,4,8,16),指定以n字节对齐。通常使用编译器默认的对齐大小最为适宜。如果指定对齐大小为1字节对齐,以上面的结构体变量aa为例,aa.c地址为N,aa.d地址为N+1,是个奇数地址,因为430在奇数地址只能读取一个字节,因此要访问d成员需要读取两次才能完成,后果是代码变长、速度变慢。
三.        匿名结构体与联合体
匿名结构体和联合体,即没有名字的结构体或者联合体,这种结构体(或联合体)无法通过.与->操作符引用(因为它所属的结构体或联合体没有名字,无法应用),而像暴露在外面一样,与外层作用域相同,可直接使用。
3.1 C标准中提及的匿名结构体和联合体(草稿原文引用)(C标准中提及的匿名结构(联合)体应该只适用于有名结构体(联合)中的匿名结构(联合)体成员)
  1. struct v{
  2.         union{ //匿名联合体
  3.                 struct {int i, j;}; //匿名结构体
  4.                 struct {long k, l;}w;
  5.         };
  6.         int m;
  7. }v1;
  8. v1.i=2; //合法,匿名结构体的成员被直接使用
  9. v1.k=3;//非法,有名字的结构体需要引用他的名字,如下
  10. v1.w.k=5; //合法
复制代码
3.2 IAR中的匿名结构体和联合体
IAR中的匿名结构体和联合体可以具有全局作用域,因此结构体或联合体中的成员可以作为全局变量使用,但却兼具结构体或者联合体的属性。
(1)        IO430.h系列头文件的寄存器声明方式:
如:
  1. __no_init volatile union
  2. {
  3.   unsigned short SFRIE1;   /* Interrupt Enable 1 */

  4.   struct
  5.   {
  6.     unsigned short WDTIE           : 1; /* WDT Interrupt Enable */
  7.     unsigned short OFIE            : 1; /* Osc Fault Enable */
  8.     unsigned short                : 1;
  9.     unsigned short VMAIE           : 1; /* Vacant Memory Interrupt Enable */
  10.     unsigned short NMIIE           : 1; /* NMI Interrupt Enable */
  11.     unsigned short ACCVIE          : 1; /* Flash Access Violation Interrupt Enable */
  12.     unsigned short JMBINIE         : 1; /* JTAG Mail Box input Interrupt Enable */
  13.     unsigned short JMBOUTIE        : 1; /* JTAG Mail Box output Interrupt Enable */
  14.   }SFRIE1_bit;
  15. } @0x0100;
复制代码
说明:[1].  SFRIE1和SFRIE1_bit具有全局变量的性质,可以直接被引用。
         [2].        SFRIE1和SFRIE1_bit在同一联合体中,根据联合体的性质,他们共享同一地址,即对同一寄存器不同访问方式,SFRIE1对整个寄存器操作,SFRIE1_bit可对某位操作,如:
SFRIE1 |= 0x0001;和SFRIE1_bit.WDTIE = 1;具有相同效果。
         [3].        冒号(:)与整数称之为位域,使用位域表达的变量使用同一数据中的不同位,并按顺序排列。整数表示这个变量占用多少位。没有名字的位域不能被引用到,一般用来保留未使用到的位(占位作用)。
(2)  在应用程序中也可以使用此特性来实现一些功能。
记得某位网友曾提出过这样的问题,要高效的使用一个整数的高8位和低8位,则可以用如下代码解决:
  1. union {
  2.         unsigned int num;
  3.         struct {
  4.                 unsigned char nLow;
  5.                 unsigned char nHigh;
  6.         };
  7. };
复制代码
或者
  1. union {
  2.         unsigned int num;
  3.         struct {
  4.                 unsigned int nLow        :8;
  5.                 unsigned int nHigh         :8;
  6.         };
  7. };
  8. int a = num;
  9. int b = nLow;
  10. int c = nHigh;
复制代码
非常好的解决方案,只占用一个整数的空间,可以对高8位、低8位、整个16位引用而不需要计算。

(3) 联合体中的位域(补充)
  1. union {
  2.         unsigned int z;
  3.         unsigned int z1 : 1;
  4.         unsigned int z2 : 2;
  5.         unsigned int z3 : 3;
  6.         unsigned int z4 : 4;
  7. };
  8. z = 0xFFFF;
  9. a = z1;
  10. b = z2;
  11. c = z3;
复制代码
结果:a = 1, b = 3, c = 7;

(4)结构体中的位域长度0 (补充)
  1. union ZZ{
  2.         unsigned int z1 : 1;
  3.         unsigned int z2 : 1;
  4.         unsigned int z3 : 1;
  5.         unsigned int z4 : 1;
  6.         unsigned int : 0;
  7.         unsigned int z6 : 1;
  8. }zz;
复制代码
长度为0的位域是通知编译器不要在以前的单元上分配位域了,代表着一个单元的位域分配结束,这个长度为0的位域不能有名字。以后的位域分配要新开辟一个单元。
以上的例子中,z1, z2, z3, z4共用一个unsigned int中的4个bit,z6单独使用一个unsigned int; 此结构体共占用两个unsigned int空间

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2012-12-20 14:48:53 | 显示全部楼层
非常感谢53楼热心的童鞋指出错误。
(4)结构体中的位域长度0 (补充)
代码部分的union应为struct。

出0入0汤圆

发表于 2012-4-7 21:15:31 | 显示全部楼层
楼主继续加油~~~

出0入0汤圆

发表于 2012-4-7 22:35:48 | 显示全部楼层
很好的教程啊!

出0入0汤圆

发表于 2012-4-8 06:39:30 | 显示全部楼层
看完该贴,纠正了我原来在
http://www.ourdev.cn/forum.php?m ... p;page=7#pid5725866
中对匿名结构体的片面理解。我原来认为,只是结构体类型可以匿名,没想到结构体变量也可以匿名。

出0入0汤圆

发表于 2012-4-8 07:19:48 | 显示全部楼层
发现一矛盾之处。
帖子提到,“3.1 C标准中提及的匿名结构体和联合体(草稿原文引用)(C标准中提及的匿名结构(联合)体应该只适用于有名结构体(联合)中的匿名结构(联合)体成员)”。就是说匿名结构体一定要是另外一个实名结构体的成员。不可以一上来就定义匿名结构体。
但是,在“IO430.h系列头文件的寄存器声明方式”给出的实例中,一上来定义的union就是匿名的,而且说其成员可被看作全局变量。这是否与上述c标准矛盾?

出0入0汤圆

发表于 2012-4-8 07:20:05 | 显示全部楼层
在“记得某位网友曾提出过这样的问题,要高效的使用一个整数的高8位和低8位,则可以用如下代码解决:”给出的实例也是如此,一上来就定义了匿名联合体,而内部的成员结构体也是匿名的,并说成员变量都变成了全局变量。觉着这样也太神奇了?

出0入0汤圆

发表于 2012-4-8 07:23:56 | 显示全部楼层
按此类推,楼主给出的第一个“基本用法”中的第一句话:
struct AA{ int a; int b;}; //结构体的声明和定义
是否等价于定义了一个匿名结构体?然后可直接按全局变量访问:
a = 0;

出0入0汤圆

发表于 2012-4-8 07:37:50 | 显示全部楼层
mark msp430

出0入0汤圆

发表于 2012-4-8 07:41:33 | 显示全部楼层
在IAR中验证了一下。
struct AA{ int a; int b;}; //结构体的声明和定义
a = 0;
不成立。报告a没有定义。
但是:
struct { int a; int b;}; //结构体的声明和定义
a = 0;
成立。
真的很神奇。要想等效全局变量,要求结构体类型名(如基本用法中的AA)和结构体变量名(如基本用法中的s1)都是匿名。
进一步,c标准中“匿名结构体一定要是另一个实名结构体的成员”的要求已经没必要了。

出0入0汤圆

 楼主| 发表于 2012-4-8 10:34:07 | 显示全部楼层
xizi 发表于 2012-4-8 07:41
在IAR中验证了一下。
struct AA{ int a; int b;}; //结构体的声明和定义
a = 0;

An unnamed member of structure type with no tag is called an anonymous structure; an
unnamed member of union type with no tag is called an anonymous union. The members
of an anonymous structure or union are considered to be members of the containing
structure or union. This applies recursively if the containing structure or union is also
anonymous.
这是草稿原文,我英文不好,也翻译不明白。你英文肯定比我好多了,最好解释一下。上面帖子中的内容都是我个人的理解,所以没用肯定的语气。
各种编译器是允许对C进行各种扩展的(可能标准不支持全局的,但IAR支持也不为过,标准未明确提出匿名结构体这个概念的时候,IAR就已经使用了。)。
匿名结构体是没有名字(变量名)的结构体,同时肯定也没有类型名,否则就是一个结构体类型的声明了。
匿名结构体在C11中第一次提出,以前的标准结构体用法均不属于匿名结构体。

出0入0汤圆

发表于 2012-4-8 11:04:31 | 显示全部楼层
匿名结构体,联合体 不同编译器,有一些不一样。

出0入0汤圆

 楼主| 发表于 2012-4-8 11:15:44 | 显示全部楼层
uc_c++ 发表于 2012-4-8 11:04
匿名结构体,联合体 不同编译器,有一些不一样。

您是uc_cpp的马甲么,您的cpp功底不浅,受教受教。
我的例子大部分都是只针对IAR的。对于一些标准,有些编译器支持,有些不支持。对于非标准,很多编译器也扩展了。只要是好的特性,我们去使用他绝对没错。

出0入0汤圆

发表于 2012-4-8 12:12:01 | 显示全部楼层
lcofjp 发表于 2012-4-8 11:15
您是uc_cpp的马甲么,您的cpp功底不浅,受教受教。
我的例子大部分都是只针对IAR的。对于一些标准,有些 ...

原先不知道用户名 可以用'++'字符,所以用'pp'。

c++ 比 cpp 好。

出0入0汤圆

发表于 2012-4-8 22:15:36 | 显示全部楼层
关注一下c11:
http://tieba.baidu.com/p/1339583282
C1X In 2007, work began on another revision of the C standard, informally called "C1X" until its official publication on 2011-12-08. The C standards committee adopted guidelines to limit the adoption of new features that have not been tested by existing implementations. C1X In 2007,基于一个对C标准的又一修订版,在2011-12-08官方出版之前,被非正式的称呼为:C1X。
C标准委员会采纳了一些指导方针来限制未被现存编译器测试的新的特性。 The C11 standard adds numerous new features to C and the library, including type generic macros, anonymous structures, improved Unicode support, atomic operations, multi-threading, and bounds- checked functions. It also makes some portions of the existing C99 library optional, and improves compatibility with C++. C11标准为C语言及库添加了若干新特性,包括泛型宏定义、匿名结构体、更好的Unicode支持、原子操作、多线程、边界检测函数。新标准将C99中的一部分变为可选(非必需),提高了与C++兼容性。

出0入0汤圆

发表于 2012-4-9 00:23:41 | 显示全部楼层
本帖最后由 xizi 于 2012-4-9 01:05 编辑
lcofjp 发表于 2012-4-8 10:34
An unnamed member of structure type with no tag is called an anonymous structure; an
unnamed membe ...


原文的头两句比较简单,就不翻译了。后两句提到:
The members of an anonymous structure or union are considered to be members of the containing
structure or union. This applies recursively if the containing structure or union is also anonymous.
是说:匿名结构体/联合体的成员会被看作是父结构体/联合体的成员。当父结构体/联合体也是匿名时,这种归属是递进的。

不知哪里可以看到更多的原文?这段原文中没有明确提到“匿名结构体应是另一个实名结构体的成员”。
“可能标准不支持全局的,但IAR支持也不为过” -- c标准或许就支持全局也不一定。
“标准未明确提出匿名结构体这个概念的时候,IAR就已经使用了。”--正确。标准是一个从实践到理论的过程。IAR,GCC都进行了好的实践,C11就把它推广开来。

提一下KEIL。keil不支持匿名结构体,这点上不如IAR。keil甚至都不支持c99的特性 for(int i = 0; i < 10; i++);

出0入0汤圆

发表于 2012-4-9 00:27:03 | 显示全部楼层
是转载还是翻译?

出0入0汤圆

发表于 2012-4-9 01:00:48 | 显示全部楼层
abuffalo 发表于 2012-4-9 00:27
是转载还是翻译?

你在问哪个贴?
c11概述一贴是转载,链接已经给出。匿名结构体的两句解释一贴是翻译。

出0入0汤圆

发表于 2012-4-9 01:09:51 | 显示全部楼层
学习 收藏

出0入0汤圆

 楼主| 发表于 2012-4-9 07:15:53 | 显示全部楼层
abuffalo 发表于 2012-4-9 00:27
是转载还是翻译?

本文属于原创

出0入0汤圆

 楼主| 发表于 2012-4-9 07:28:29 | 显示全部楼层
xizi 发表于 2012-4-9 00:23
原文的头两句比较简单,就不翻译了。后两句提到:
The members of an anonymous structure or union are  ...

正版我也没有,网络受限我也上传不了资料,可以看考一下这个委员会的手稿,这部分在6.2.7.1

http://ishare.iask.sina.com.cn/f/22734453.html
(ISO/IEC 9899:201X)

出0入0汤圆

 楼主| 发表于 2012-4-9 08:55:40 | 显示全部楼层
xizi 发表于 2012-4-9 00:23
原文的头两句比较简单,就不翻译了。后两句提到:
The members of an anonymous structure or union are  ...

Keil是编译器中的异类,我认为它是一个“保守”的编译器。

出0入0汤圆

发表于 2012-4-9 15:30:25 | 显示全部楼层
关注。。。谢谢!补充C语言知识!

出0入0汤圆

发表于 2012-4-9 20:42:36 | 显示全部楼层
lcofjp 发表于 2012-4-9 07:28
正版我也没有,网络受限我也上传不了资料,可以看考一下这个委员会的手稿,这部分在6.2.7.1

http://isha ...

下载了。这部分在6.7.2.1,item13。不是6.2.7.1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-4-9 20:51:44 | 显示全部楼层
谢了,看看。。。。。。。。

出0入0汤圆

发表于 2012-4-9 21:13:25 | 显示全部楼层
太帅了   真的长见识了     
  谢谢 你们

出50入0汤圆

发表于 2012-4-12 19:58:53 | 显示全部楼层
关注下,  充电ing.......

出0入0汤圆

发表于 2012-4-14 14:17:29 | 显示全部楼层
貌似结构体这东西用起来很是方便那!

出0入0汤圆

发表于 2012-4-20 15:35:25 | 显示全部楼层
mark^^^^^^^^
头像被屏蔽

出0入0汤圆

发表于 2012-4-24 12:44:36 | 显示全部楼层
Cool !

出0入4汤圆

发表于 2012-4-29 22:12:50 | 显示全部楼层
mark明天看  

出0入0汤圆

发表于 2012-5-7 22:26:04 | 显示全部楼层
楼主加油~~~慢慢写~保证每期都看

出0入0汤圆

发表于 2012-6-1 13:43:10 | 显示全部楼层
写的太好了

出0入0汤圆

发表于 2012-6-3 09:51:19 | 显示全部楼层
啊哈 貌似在哪儿看到过

出0入0汤圆

发表于 2012-6-3 09:52:03 | 显示全部楼层
这下头文件好多东西都能看懂了  顶一个

出0入0汤圆

发表于 2012-6-3 15:54:07 | 显示全部楼层
mark一下…………

出0入0汤圆

发表于 2012-6-4 11:57:04 | 显示全部楼层
学习学习,谢谢

出0入0汤圆

发表于 2012-6-15 21:48:16 | 显示全部楼层
很好的教程啊!

出0入0汤圆

发表于 2012-6-16 09:49:23 | 显示全部楼层
不错的教程,正在用IAR和430单片机呢,控制gsm模块gprs通信和短信处理

出0入0汤圆

发表于 2012-6-16 21:14:39 | 显示全部楼层
不错,学习了

出0入0汤圆

发表于 2012-6-17 00:06:34 | 显示全部楼层
楼主V5,呵呵

出0入0汤圆

发表于 2012-6-20 18:57:39 | 显示全部楼层
不错的教程

出0入0汤圆

发表于 2012-6-20 21:33:42 | 显示全部楼层
mark!!!!!!!!!!

出0入0汤圆

发表于 2012-6-22 08:23:06 | 显示全部楼层
楼楼主加油哈~~学习学习

出0入0汤圆

发表于 2012-6-24 14:23:40 | 显示全部楼层
很好的教程啊!

出0入0汤圆

发表于 2012-6-28 23:42:43 | 显示全部楼层
很好教程 以后要考虑多用用这两个 谢谢楼主分享!!!!

出0入0汤圆

发表于 2012-7-8 14:38:36 | 显示全部楼层
先收藏,谢谢

出0入0汤圆

发表于 2012-7-9 20:53:34 | 显示全部楼层
学习了。。。。

出0入0汤圆

发表于 2012-8-9 15:07:06 | 显示全部楼层
mark 学习了

出0入0汤圆

发表于 2012-8-9 15:21:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-8-14 22:15:06 | 显示全部楼层
很好的教程,谢谢!!!

出0入0汤圆

发表于 2012-8-14 22:43:13 | 显示全部楼层
先标记!

出0入0汤圆

发表于 2012-12-13 20:08:39 | 显示全部楼层
这个必须mark之

出0入0汤圆

发表于 2012-12-20 13:46:26 | 显示全部楼层
楼主亲,你最后定义的联合体并没有像你描述的那样哦.

(4)结构体中的位域长度0 (补充)

长度为0的位域是通知编译器不要在以前的单元上分配位域了,代表着一个单元的位域分配结束,这个长度为0的位域不能有名字。以后的位域分配要新开辟一个单元。
以上的例子中,z1, z2, z3, z4共用一个unsigned int中的4个bit,z6单独使用一个unsigned int; 此结构体共占用两个unsigned int空间


应该是下面的定义才对.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-12-20 14:41:18 | 显示全部楼层
wangxj_nemo 发表于 2012-12-20 13:46
楼主亲,你最后定义的联合体并没有像你描述的那样哦.

(4)结构体中的位域长度0 (补充)

您好,非常感谢细心的您,确实是有问题,属于笔误。是结构体(struct)才有这个效果,而代码给出的是联合体(union)。

出0入0汤圆

发表于 2012-12-20 15:03:32 | 显示全部楼层
好东西学一学

出0入0汤圆

发表于 2012-12-20 16:06:17 | 显示全部楼层

出0入0汤圆

发表于 2012-12-20 18:08:58 | 显示全部楼层
写的太好了

出0入0汤圆

发表于 2013-1-11 09:37:23 | 显示全部楼层
写的很好让人看了一目了然。

出0入0汤圆

发表于 2013-3-3 11:36:43 | 显示全部楼层
不错,学习了

出0入0汤圆

发表于 2013-3-5 20:09:03 来自手机 | 显示全部楼层
不错,学习学习

出0入0汤圆

发表于 2013-3-5 21:45:47 来自手机 | 显示全部楼层
支持下!

出0入0汤圆

发表于 2013-3-22 13:32:33 | 显示全部楼层
mark,学习中

出0入0汤圆

发表于 2013-3-28 23:42:50 | 显示全部楼层
不错不错啊

出0入0汤圆

发表于 2013-3-29 09:19:38 | 显示全部楼层
记下~~~~~

出0入0汤圆

发表于 2013-3-29 19:12:49 | 显示全部楼层
用在串口发送多组不同类型的数据比较方便。

出0入0汤圆

发表于 2013-4-10 23:20:59 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2013-4-20 13:56:54 | 显示全部楼层
谢谢!补充C语言知识!

出0入0汤圆

发表于 2013-5-3 15:25:55 | 显示全部楼层
很好的教程,谢谢分享

出0入0汤圆

发表于 2013-5-3 15:28:34 | 显示全部楼层
学习,谢谢!!!

出0入0汤圆

发表于 2013-5-6 23:37:05 | 显示全部楼层
mark markmark mark

出0入0汤圆

发表于 2013-5-7 10:59:09 | 显示全部楼层
mark,thanks.

出0入0汤圆

发表于 2013-5-8 17:12:02 | 显示全部楼层
手就去。原来我的理解太肤浅了……

出0入0汤圆

发表于 2013-8-12 11:13:16 来自手机 | 显示全部楼层
mark……
顶一个…

出0入0汤圆

发表于 2013-8-21 14:10:45 | 显示全部楼层
记号
顶一个

出0入0汤圆

发表于 2013-8-24 10:19:56 | 显示全部楼层
很不错的。值得收藏

出0入0汤圆

发表于 2013-8-24 10:49:27 | 显示全部楼层
很好,学习学习

出0入0汤圆

发表于 2013-8-25 10:46:02 | 显示全部楼层
记录一下,

出0入0汤圆

发表于 2013-9-1 20:17:01 | 显示全部楼层
这个非常好!!!!!!!!!!

出0入0汤圆

发表于 2013-9-1 21:01:14 | 显示全部楼层
mark!

出0入0汤圆

发表于 2013-9-2 19:12:30 | 显示全部楼层
看来都是得多实践一下才行。以前就只知道前面的三种结构体定义。所谓的匿名还真是学习了。

出0入0汤圆

发表于 2013-9-2 21:11:52 | 显示全部楼层
受教匪浅

出0入0汤圆

发表于 2013-9-5 11:51:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-9-6 17:10:34 | 显示全部楼层
谢谢LZ分享经验!学习了!

出0入0汤圆

发表于 2014-3-13 19:55:48 | 显示全部楼层
mark!!!!!!!

出0入0汤圆

发表于 2014-3-19 21:54:22 | 显示全部楼层
挺不错的

出0入0汤圆

发表于 2014-3-19 22:50:02 | 显示全部楼层
过来看卡

出0入0汤圆

发表于 2014-3-20 00:29:44 | 显示全部楼层
mark                          

出0入0汤圆

发表于 2014-3-20 08:55:22 | 显示全部楼层
讲得不错,学习了!

出0入0汤圆

发表于 2014-3-22 13:09:36 | 显示全部楼层
很好的教程

出0入0汤圆

发表于 2014-4-4 18:42:34 | 显示全部楼层
过来学习一下

出0入0汤圆

发表于 2014-4-4 18:44:59 | 显示全部楼层
过来看看

出0入0汤圆

发表于 2014-4-4 21:00:23 | 显示全部楼层
学习学习下

出0入0汤圆

发表于 2014-4-5 13:22:44 | 显示全部楼层
学习下,做个标记

出0入0汤圆

发表于 2014-4-11 22:19:31 | 显示全部楼层
#在这里快速回复#頭好昏~

出0入0汤圆

发表于 2014-6-5 17:27:13 | 显示全部楼层
做个小标记。。。。。。。。结构体

出0入0汤圆

发表于 2014-6-5 23:04:07 | 显示全部楼层
mark......

出0入0汤圆

发表于 2014-8-12 21:11:38 | 显示全部楼层
做个小标记,C语言到这里就没用过了~

出0入0汤圆

发表于 2014-9-15 10:30:59 | 显示全部楼层
老大厉害。长期潜水员要加油了 ,努力升级

出0入0汤圆

发表于 2014-9-29 16:00:21 | 显示全部楼层
准备用,mark下!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 20:49

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表