社区
C语言
帖子详情
c语言中的结构体和标签
threefeets
2011-08-04 06:12:27
记得书上说要这样写
typedef struct label
{
int a;
struct label *ptr;
}lab
而这样写不对
typedef struct
{
int a;
struct lab *ptr;
}lab
因为前面的lab未声明。
但是我在调试时发现下面这样写能通过啊,怎么解释?
...全文
337
8
打赏
收藏
c语言中的结构体和标签
记得书上说要这样写 typedef struct label { int a; struct label *ptr; }lab 而这样写不对 typedef struct { int a; struct lab *ptr; }lab 因为前面的lab未声明。 但是我在调试时发现下面这样写能通过啊,怎么解释?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
threefeets
2011-08-05
打赏
举报
回复
[Quote=引用 5 楼 anyidan 的回复:]
哪本书上说的?
本论坛搜 zhao4zhong1
[/Quote]
c和指针
AnYidan
2011-08-05
打赏
举报
回复
哪本书上说的?
本论坛搜 zhao4zhong1
izhongshaowu
2011-08-05
打赏
举报
回复
[Quote=引用楼主 threefeets 的回复:]
记得书上说要这样写
typedef struct label
{
int a;
struct label *ptr;
}lab
而这样写不对
typedef struct
{
int a;
struct lab *ptr;
}lab
因为前面的lab未声明。
但是我在调试时发现下面这样写能通过啊,怎么解释?
[/Quote]
不管在哪种平台,第一种都能通过的,第二种也能通过,我想教科书说的应该是:
typedef struct label
{
int a;
label *ptr;
}lab
这种定义方式,typedef struct 后面一定要加上label,否则不能编译通过。
ringer564597
2011-08-05
打赏
举报
回复
[Quote=引用楼主 threefeets 的回复:]
记得书上说要这样写
typedef struct label
{
int a;
struct label *ptr;
}lab
而这样写不对
typedef struct
{
int a;
struct lab *ptr;
}lab
因为前面的lab未声明。
但是我在调试时发现下面这样写能通过啊,怎么解释?
[/Quote]
如果那书上给出的原因就是这么一句“因为前面的lab未声明。”,
建议换本书,
虽然编译过程一般都是从上到下,但这不是唯一的方式,而且标识符转化为机器语言后不一定是占内存空间的。
比如说,你前面定义了一个int a;之后有句a++;
那么编译成机器语言后,这个a实际可能是不存在的,只是编译过程中编译器记住了a的地址,
假设这个地址是0x00ababab,那么最后执行时,a++;这句代码就是(0x00ababab)+1。
汇编中括号是取地址的内容。
所以,struct lab *ptr;这个lab的意义并不大,知道指针类型就够了。
想了解指针,其实自己DEBUG试试就知道了,
弄一个数据类型,再定义个指向它的指针,多赋几个值,去看看这两个地址的内容都有什么变化,
其它就没啥了。
threefeets
2011-08-04
打赏
举报
回复
[Quote=引用 3 楼 icemornings 的回复:]
你把第二个里面的改成struct XXXX *ptr;也照样能编译通过……
原因我想可能是:
你的第二个变量是指针变量,指针的长度在固定的环境下是固定大小的,32位一般为4Bytes。
编译器不看类型只看大小。
--------------------------
纯属个人理解。
[/Quote]
可能这样吧,待会验证下
icemornings
2011-08-04
打赏
举报
回复
你把第二个里面的改成struct XXXX *ptr;也照样能编译通过……
原因我想可能是:
你的第二个变量是指针变量,指针的长度在固定的环境下是固定大小的,32位一般为4Bytes。
编译器不看类型只看大小。
--------------------------
纯属个人理解。
threefeets
2011-08-04
打赏
举报
回复
[Quote=引用 1 楼 ringer564597 的回复:]
C编译器?
[/Quote]
对啊,gcc编译器
ringer564597
2011-08-04
打赏
举报
回复
C编译器?
基于
C语言
开发设计的人员管理系统
在初始登录界面进行用户登录,按键驱动进入到人员管理界面,在人员管理界面
中
包含有新增用户,查询用户信息,修改用户信息的基础业务功能,通过本次
C语言
设计系统的学习,加深对
C语言
数组,
C语言
结构体
的理解,学习UI框架的设计思路,分析
标签
、编辑框、按钮控件的共性,完成控件
结构体
的封装,分析不同界面的特点,完成窗口
结构体
的封装,学习UI框架封装窗体监听键盘驱动,通过实战学习
C语言
,对刚入门想要学习
C语言
的朋友们,这是一个值得练手的项目!
第10章
结构体
和共用体-7枚举类型1
第10章
结构体
和共用体——枚举类型
C语言
程序设计第10章
结构体
和共用体枚举
标签
枚举数据类型枚举(Enumeration)——一一列举应用场合当某些量仅由有限
深入理解
C语言
指针和
结构体
本课程的主要目的是通过介绍
C语言
的指针、指针变量、静态内存分配、动态内存分配以及
结构体
等知识,实现
C语言
到Java以及Python编程的一个完美过渡.
C
结构体
C
结构体
C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程
中
另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。 结构用于表示一条记录,假设您想要跟踪图书馆
中
书本的动态,您可能需要跟踪每本书的下列属性: Title Author Subject Book ID 定义结构 为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下: struct tag { member-list member-list member-list ... } variable-list ; tag 是
结构体
标签
。
C语言
中
结构体
标签
的使用
C语言
中
结构体
标签
的使用 我们都知道,
结构体
标签
就是
结构体
的名称,为
结构体
命名可以方便我们在后续继续使用该
结构体
。 如 struct student { char* name; int age; } struct student zhangsan; struct student lisi; 这里定义了两个student
结构体
类型的变量,每次使用时都需要加上struct,比较麻烦。实际上更多情况下 我们会使用typedef来给一个匿名
结构体
起个别名,不用每次都输入struct。 如 typedef s
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章