C 程序员传统上喜欢知道很多(可能比他们需要知道的还要多) 关于机器实现的细节。
空指针在源码和大多数机器实现中都用零来表示的事实导致了很多无根据的猜测。
问题:
考虑到有关空指针的所有这些困惑,
难道把要求它们内部表达都必须为0 不是更简单吗?如果没有其它的原因, 这样做会是没脑筋的。
因为它会不必要地限制某些实现, 阻止它们...
我的strCAt() 不行.
我试了char *s1 = "Hello, "; char *s2 ="world!"; char *s3 = strCAt(s1, s2);
但...
一般地说, 使用指针的时候, 你必须总是考虑内存分配, 除非明确知道编译器替你做了此事。
如果一个库函数的文档没有明确提到内存分配, 那么通常需要调用者来考虑。Unix 型的手册...
在调用alloCA() 的函数返回的时候, 它分配的内存会自动释放。
也就是说, 用alloCA 分配的内存在某种程度上局部于函数的“堆栈帧&rdquo...
字符和字符串的区别显而易见, 而strCAt() 用于连接字符串。
C 中的字符用它们的字符集值对应的小整数表示, 参见下边的问题8.4。
字符串用...
简单地说:
实现定义意味着实现必须选择某种行为并提供文档。
未明确意味着实现必须选择某种行为但不必提供文档。
未定义意味着任何事情都可能发生。
标准在任何情况下都不强加需求...
问题:
我发现如果坚持检查返回值以确保用户输入的是我期待的数值, 则 sCAnf() 的使用会安全很多, 但有的时候好像会陷入无限循环。在sCAnf() 转换数字的时候, 它遇到...
sCAnf() 有很多问题—— 参见问题12.15, 12.16 和12.17。
而且, 它的%s 格式有着和gets() 一样的问题(参见问题12.20...
strncpy() 最初被设计为用来处理一种现在已经废弃的数据结构——定长, 不 必’n0’ 结束的“字符串&rdquo...
只要使用函数time(), ctime(), loCAltime() 和/或strftime() 就可以了。
下面是个简单的例子:
#include <stdio.h&g...
ANSI/ISO 标准C 函数mktime() 和difftime() 对这两个问题提供了一些有限的支持。
mktime() 接受没有规格化的日期, 所以可以用一个日期的stru...
这一段信息不可移植。
一些旧系统提供一个非标准函数nargs()。
然而它的可信度值得怀疑, 因为它的典型返回值是参数的字节长度, 而不是参数的个数...
问题:
“Segmentation violation”, “Bus error” 和“General protect...
这些功能跟你所用的终端类型(或显示器) 有关。
你需要使用termCAp, terminfo 或curses 类的函数库, 或者系统提供的特殊函数。
...
terminfo, 某些版本的termCAp, 以及某些版本的curses 函数库有对这些非ASCII 键的支持。
典型的, 一个特殊键会发送一个多字符序列(通常以...
用<stdarg.h>提供的辅助设施。
下面是一个把任意个字符串连接起来的函数, 结果存在malloc 的内存中:
#include <stdlib.h>...
这取决于你要做什么。
如果你希望丢掉调用sCAnf() (参见问题12.16 - 12.17)之后所剩下的换行符和未预知的输入, 你可能需要重写你的sCAnf() ...
1 对sizeof 的理解:
例子1:
void main()
{
int a = 2;
...
1 将字符串转化为整数。
long stringToInt(char *s){
...