基础知识练习
士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭
小林:在调用 alloca() 的函数返回的时候, 它分配的内存会自动释放。也就是说, 用 alloca 分配的内存在某种程度上局部于函数的 “堆栈帧” 或上下文中。 alloca() 不具可移植性, 而且在没有传统堆栈的机器上很难实现。当它的返回 值直接传入另一个函数时会带来问题, 如 fgets(alloca(100), 100, stdin)。 由于这些原因, alloca() 不合标准, 不宜使用在必须广泛移植的程序中, 不管它 可能多么有用。既然 C99 支持变长数组(VLA), 它可以用来更好的完成 alloca() 以 前的任务。
学生:为什么 strcat(string, ’!’); 不行?
小林:字符和字符串的区别显而易见, 而 strcat() 用于连接字符串。 C 中的字符用它们的字符集值对应的小整数表示。字符 串用字符数组表示; 通常你操作的是字符数组的第一个字符的指针。二者永远不 能混用。要为一个字符串增加 !, 需要使用strcat(string, “!”);
正文完