免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: kunson
打印 上一主题 下一主题

问个菜题,纯C中,如何在定义结构体时 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-03-22 13:59 |只看该作者

问个菜题,纯C中,如何在定义结构体时

>;>;“字符串”(C里尽量不要使用这个概念,字符数组是其本来面目)

严重同意!!这是C初学者最容易糊涂的地方之一。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
12 [报告]
发表于 2005-03-22 14:01 |只看该作者

问个菜题,纯C中,如何在定义结构体时

看了一下,三种方式出来的汇编代码是一样的。

论坛徽章:
12
辰龙
日期:2013-10-23 11:06:312015年迎新春徽章
日期:2015-03-04 09:50:28拜羊年徽章
日期:2015-03-03 16:15:43戌狗
日期:2014-12-22 14:49:17申猴
日期:2014-05-14 17:25:17狮子座
日期:2014-04-26 18:50:20双子座
日期:2014-04-04 12:32:31巨蟹座
日期:2014-03-13 00:04:36技术图书徽章
日期:2014-03-12 17:50:42白羊座
日期:2014-02-28 23:46:54丑牛
日期:2013-11-15 05:36:11CU十四周年纪念徽章
日期:2016-01-18 04:54:01
13 [报告]
发表于 2005-03-22 14:42 |只看该作者

问个菜题,纯C中,如何在定义结构体时

谢谢各位!

我在Linux上
gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)

源文件 t.c

  1. #include <stdio.h>;
  2. #include <string.h>;
  3. #include <stdlib.h>;

  4. int main()
  5. {
  6.   typedef struct _Stu{
  7.     char name[32]:"asdf";
  8.     int  age:1;
  9.   }Stu, *PStu;

  10.   Stu  zhang;

  11.   printf("%s\n", zhang.name);
  12.   printf("%d\n", zhang.age);

  13. }
复制代码


编译:$ gcc t.c


  1. :! gcc t.c
  2. t.c: In function `main':
  3. t.c:8: error: bit-field `name' width not an integer constant
  4. t.c:14: error: cannot take address of bit-field `name'

  5. Shell 已返回1
复制代码


说我那个地方的宽度不是一个整数的常量?郁闷

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
14 [报告]
发表于 2005-03-22 14:45 |只看该作者

问个菜题,纯C中,如何在定义结构体时

狂晕,类型里怎么可以有具体的值呢?

论坛徽章:
12
辰龙
日期:2013-10-23 11:06:312015年迎新春徽章
日期:2015-03-04 09:50:28拜羊年徽章
日期:2015-03-03 16:15:43戌狗
日期:2014-12-22 14:49:17申猴
日期:2014-05-14 17:25:17狮子座
日期:2014-04-26 18:50:20双子座
日期:2014-04-04 12:32:31巨蟹座
日期:2014-03-13 00:04:36技术图书徽章
日期:2014-03-12 17:50:42白羊座
日期:2014-02-28 23:46:54丑牛
日期:2013-11-15 05:36:11CU十四周年纪念徽章
日期:2016-01-18 04:54:01
15 [报告]
发表于 2005-03-22 14:51 |只看该作者

问个菜题,纯C中,如何在定义结构体时

恩。如果把字符数组的相关行注释掉,还是能编译通过。如果在变量定义时,对字符数组用:初始化,会有同样的抱错。

我希望类型里就有了一定的初始工作,是不是太乱来了?呵呵。

论坛徽章:
0
16 [报告]
发表于 2005-03-22 14:56 |只看该作者

问个菜题,纯C中,如何在定义结构体时

原帖由 "kunson" 发表:
恩。如果把字符数组的相关行注释掉,还是能编译通过。如果在变量定义时,对字符数组用:初始化,会有同样的抱错。

我希望类型里就有了一定的初始工作,是不是太乱来了?呵呵。

那个冒号是“位域”的意思,不是初始化的意思。
定义类型和定义变量是两回事。
只有定义变量的时候才可以初始化,类型怎么初始化?

论坛徽章:
12
辰龙
日期:2013-10-23 11:06:312015年迎新春徽章
日期:2015-03-04 09:50:28拜羊年徽章
日期:2015-03-03 16:15:43戌狗
日期:2014-12-22 14:49:17申猴
日期:2014-05-14 17:25:17狮子座
日期:2014-04-26 18:50:20双子座
日期:2014-04-04 12:32:31巨蟹座
日期:2014-03-13 00:04:36技术图书徽章
日期:2014-03-12 17:50:42白羊座
日期:2014-02-28 23:46:54丑牛
日期:2013-11-15 05:36:11CU十四周年纪念徽章
日期:2016-01-18 04:54:01
17 [报告]
发表于 2005-03-22 15:00 |只看该作者

问个菜题,纯C中,如何在定义结构体时

原帖由 "Haskell" 发表:

那个冒号是“位域”的意思,不是初始化的意思。
定义类型和定义变量是两回事。
只有定义变量的时候才可以初始化,类型怎么初始化?


受教了,请说说位域的概念啊!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
18 [报告]
发表于 2005-03-22 15:02 |只看该作者

问个菜题,纯C中,如何在定义结构体时

原帖由 "kunson" 发表:


受教了,请说说位域的概念啊!


仔细看教材!上面讲得很清楚啊!很基本的概念了。

论坛徽章:
0
19 [报告]
发表于 2005-03-22 15:07 |只看该作者

问个菜题,纯C中,如何在定义结构体时

>;>;受教了,请说说位域的概念啊!

你就理解成数据库二位关系表中的字段好了。


你说的那种在类型中就有初始化,我觉得跟面向对象设计模式里的singleton模式很相似,也不知理解的对不对。不知道C能不能半到(老实说,偶还怀疑C有什么办不到的),下面是一个美国牛人的书:
http://www.planetpdf.com/codecuts/pdfs/ooc.pdf
叫Object-Oriented Programming with ANSI-C。我没看过还,他说ANSI-C是一个Full-Scaled面向对象的程序设计语言。呵呵。

论坛徽章:
12
辰龙
日期:2013-10-23 11:06:312015年迎新春徽章
日期:2015-03-04 09:50:28拜羊年徽章
日期:2015-03-03 16:15:43戌狗
日期:2014-12-22 14:49:17申猴
日期:2014-05-14 17:25:17狮子座
日期:2014-04-26 18:50:20双子座
日期:2014-04-04 12:32:31巨蟹座
日期:2014-03-13 00:04:36技术图书徽章
日期:2014-03-12 17:50:42白羊座
日期:2014-02-28 23:46:54丑牛
日期:2013-11-15 05:36:11CU十四周年纪念徽章
日期:2016-01-18 04:54:01
20 [报告]
发表于 2005-03-22 15:08 |只看该作者

问个菜题,纯C中,如何在定义结构体时

原帖由 "aero" 发表:


仔细看教材!上面讲得很清楚啊!很基本的概念了。


说的是,我还回去了。

回家赶紧的。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP