摘要:
1、如果f是一个函数,则f();指调用该函数,而f;却什么也不做,准确的说,这个语句计算函数f的地址,但并不调用该函数。2、C语言允许初始化列表出现多余的逗号,是为了对称。如:int days[] = {1, 2, 3, 4, 5, 6, 7,};最后有逗号是正确的。3、malloc要注意是否申请成功,和最后的free。4、strcpy的目标要申请好了内存。5、溢出的结果是未定义的。6、strcpy只用于字符串复制,memcpy用于一般内存的复制。strcpy根据\0判断结束否,memcpy根据第三个参数的长度判断结束。实现如下:char * strcpy(char * dest, const 阅读全文
摘要:
第一章 C:穿越时空的迷雾1、auto关键字显然是摆设,意思是“在进入程序块时自动进行内存分配”,与全局静态分配或在堆上动态分配相反。2、register关键字。3、“任何学习或使用c语言的人都应当使用ANSI C,而不是K&R C”。4、未确定的(unspecified)——在某些正确情况下的做法,标准并未明确规定应该怎么做。如:计算参数的顺序。未定义的(undefined)——在某些不正确情况下的做法,但标准并未规定应该怎么做。如:有符号整数溢出该采取什么行动。约束条件(a constraint)——这是一个必须遵守的限制或要求。注:未确定的不会导致错误,但是未定义的可能会导致错误 阅读全文