前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一面(7)

基础知识 | 每日一面(7)

作者头像
小林C语言
发布2019-12-18 16:53:56
2270
发布2019-12-18 16:53:56
举报
古代的剑客们与

对手相逢时,无

论对手多么强大,

明知不敌,也要亮出自己的剑!

读者:extern 在函数声明中是什么意思?

小林:它可以用作一种格式上的提示表明函数的定义可能在另一个源文件中, 但在extern int f();和int f();之间并没有实质的区别。

读者:关键字 auto 到底有什么用途?

小林:具体没什么用处,它已经过时。

读者:我试过 typedef struct { char *item; NODEPTR next; } *NODEPTR; 但是编译器报了错误信息,在C语言中一个结构不能包含指向自己的指针吗?

小林:C语言中的结构当然可以包含指向自己的指针; NODEPTR 例子的问题是在声明 next 域的时候 typedef 还没有定义。

为了解决这个问题, 首先赋予这个结构一个标签 (“struct node”)。然后,声明 “next” 域为 “struct node *”, 或者分开 typedef 定义和结构定义, 或者两者都采纳。

代码语言:javascript
复制
struct node {
    char *item;
    struct node *next;
};
typedef struct node *NODEPTR;

在用 typedef 定义互相引用的两个结构时也会产生类似的问题, 可以用同样的方法解决。

有时候,正是那些意想不到之人,成就了无人能成之事。——图灵

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档