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

基础知识 | 每日一练(82)

作者头像
小林C语言
发布2019-08-14 16:20:24
3260
发布2019-08-14 16:20:24
举报

基础知识练习

士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭

学生:alloca() 是什么?为什么不提倡使用它?

小林:在调用 alloca() 的函数返回的时候, 它分配的内存会自动释放。也就是说, 用 alloca 分配的内存在某种程度上局部于函数的 “堆栈帧” 或上下文中。 alloca() 不具可移植性, 而且在没有传统堆栈的机器上很难实现。当它的返回 值直接传入另一个函数时会带来问题, 如 fgets(alloca(100), 100, stdin)。 由于这些原因, alloca() 不合标准, 不宜使用在必须广泛移植的程序中, 不管它 可能多么有用。既然 C99 支持变长数组(VLA), 它可以用来更好的完成 alloca() 以 前的任务。

学生:为什么 strcat(string, ’!’); 不行?

小林:字符和字符串的区别显而易见, 而 strcat() 用于连接字符串。 C 中的字符用它们的字符集值对应的小整数表示。字符 串用字符数组表示; 通常你操作的是字符数组的第一个字符的指针。二者永远不 能混用。要为一个字符串增加 !, 需要使用strcat(string, "!");

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

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

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

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

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