C 集合
chenyu2202863
这个作者很懒,什么都没留下…
展开
-
读书笔记---返回自动变量问题及解决方案
在c中,自动变量在堆栈中分配内存,当包含自动变量的函数或代码块退出时,它们所占用的内存便被回收,他们的内容肯定会被下一个所调的函数覆盖. 解决这个问题的几个方案: 1.返回一个指向字符串长量的指针 char *fun() { return "For simple strings"; } 如果需要计算字符串的内容就无能为力了! 2.使用全局声明的数组 char *fun() { ..原创 2007-03-12 22:25:00 · 849 阅读 · 0 评论 -
读书笔记--指针与声明
先看一个例子: char *const *(*next)() 首先理解C语言的优先级规则A.声明从它的名字开始读,然后按照优先级顺序依次读B.优先级从高级高到低依次是 B1.声明中被括号括起来的那部分 B2.后缀操作符: 括号() 表示一个函数 方括号[] 表示一个数组 B3.前缀操作符:原创 2007-03-14 09:13:00 · 995 阅读 · 0 评论 -
setjmp longjmp
在C专家编程里面可有提到setjmp和longjmpsetjmp(),longjmp()是通过操纵过程活动记录实现的。* setjmp(jmp_buf j)必须首先被调用,表示“使用变量j记录的位置,函数返回零”* longjmp(jmp_buf j,int i)可以接着被调用,表示“回到j所记录的位置 ,让它看上去像从原先的setjmp()函数返回一样,返回i,使代码能够知道它实际上是通过l原创 2007-05-28 13:21:00 · 1231 阅读 · 0 评论 -
命名冲突和static修饰符
两个具有相同名称的外部对象实际代表的是同一个对象(即使用户并非本意) static修饰符是一个能够减少此类命名冲突的工具,例如: static int a;其含义与int a;相同,只不过a的作用于被限制在一个源文件内,而对于其他源文件,a是不可见的,如若干个函数需要共享一组外部对象,可以将这些函数放到一个源文件中,把他们需要用到的对象也都放在一个源文件中以static修饰,当然,st原创 2007-05-30 20:14:00 · 1078 阅读 · 0 评论 -
使用errno检测错误
很多库函数,特别是那些与操作系统有关的,当执行失败时会通过一个名为errno的外部变量,通知程序该函数调用失败 /*处理错误*/ if( errno ) { /*处理错误*/ } 该段程序是错误的,在库函数调用没有失败的情况下,并没强制要求库函数一定要设置errno为0,这样errno的值旧可能是一个执行失败的库函数设置的值 这是一个加以改进的代码段: errno=0;原创 2007-06-01 13:31:00 · 1043 阅读 · 0 评论 -
更新文件顺序
许多系统中的标准输入/输出允许程序打开一个文件,同时进行写入和读出的操作 FILE *fp; fp=fopen(file,"rt"); 打开文件名由变量file制定的文件,对于存取权限的设定表明程序希望对这个文件进行输出和输入操作 可能认为一旦执行上述操作完毕,就可以自由的交错进行读出和写入操作,事实上,一个输入操作不能随后直接跟一个输出操作,反之亦然,如果要同时输入和输出操作 ,必原创 2007-05-31 12:47:00 · 1062 阅读 · 0 评论