jw_lee

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年8月20日

摘要: 原来C语言还支持函数传递数目不定的参数。printf函数是不是依此实现的呢?实现方法1.包含宏头文件#include2.函数原型中参数的写法参数数目未定,名称也未定。用...来代替未定数目的参数,但第一个参数名一定要写。如int max_list( int num, ... );float average( int n_value, ... );3.引用参数首先要定义一个 va_list 类型的变量,用于访问参数列表的未确定部分,如va_list var_avg;然后初始化va_start( var_avg, num );第一个参数是之前声明的va_list 类型的参数,第二个是传递给函数的省 阅读全文
posted @ 2013-08-20 16:09 jw_lee 阅读(286) 评论(0) 推荐(0) 编辑

2013年8月15日

摘要: C与指针中一题需要统计质数个数,给的答案不是很详细,大致核对没有问题。在网上没找到统计专门区间的质数表。以1000为间隔统计结果The number of Primes between 0 to 1000 is 168The number of Primes between 1000 to 2000 is 134The number of Primes between 2000 to 3000 is 127The number of Primes between 3000 to 4000 is 121The number of Primes between 4000 to 5000 is 11 阅读全文
posted @ 2013-08-15 18:09 jw_lee 阅读(380) 评论(0) 推荐(0) 编辑

摘要: 又遇到一次SIGSEGV错误。这次数组指针使用确认无误,两个函数里大致用法一致,却只在其中一个函数里出错。后来发现是因为大意,数组下标变成负的了,在一个函数里下标数据类型是unsigned, 另一个里是int,应该是这个原因导致参数传递的过程中出错吧。太粗心了哎。 阅读全文
posted @ 2013-08-15 17:29 jw_lee 阅读(198) 评论(0) 推荐(0) 编辑

2013年8月13日

摘要: 函数需要一个子函数找出指定数值以内的质数,一开始在main里声明指针,子函数类型设为返回局部指针,程序正常运行,但有warning: function returns address of local variable。//Pointers on C exercise 6.4//date 2013/8/13//1000以内的质数#include#define TURE 1#define FALSE 0int *eratosthenes( int upmost );int main(){ int const up = 1000; int i = 0; int *test; ... 阅读全文
posted @ 2013-08-13 17:08 jw_lee 阅读(609) 评论(0) 推荐(0) 编辑

2013年8月1日

摘要: 程序运行到*tmp_str = *(tmp_str+length);时总是失败。什么SIGSEGV错误,好像是内存的问题。但是运行printf("%c",*tmp_str);printf("%c\n",*(tmp_str+length));这两句却没问题。后来发现这两个指针可以取值,但不能赋值。在main里面的声明为 char *test_str; char *test_substr; test_str = "I am an excellent coder!"; test_substr = "an ";想起书上说的 阅读全文
posted @ 2013-08-01 22:08 jw_lee 阅读(203) 评论(0) 推荐(0) 编辑

2013年7月22日

摘要: 要使Θ( nk+nlg( n/k ) ) 与Θ( nlgn ) 有相同渐进时间,条件是 k =lgn因为如果 k的阶次大于lgn ,nk+nlg( n/k ) 阶次就大于 nlgn这是什么证明方法啊... =.=b 阅读全文
posted @ 2013-07-22 20:32 jw_lee 阅读(152) 评论(0) 推荐(0) 编辑

摘要: 之前关于getchar的使用有个误区。getchar是一句输入结束后,挨个挨个读取的。getchar用法int getchar(void),从标准输入中一次读取一个字符。可以从键盘读入,也可以从文件读入。从文件读入的方法:#includeFILE *fp;void main(){ char c; fp=freopen("test.txt","r",stdin); while((c=getchar())!=EOF){ putchar(c); }}注意while((c=getchar())!=0),c=getchar()两边要再加括号。判断的是c的值,c从g 阅读全文
posted @ 2013-07-22 09:54 jw_lee 阅读(330) 评论(0) 推荐(0) 编辑

2013年7月16日

摘要: FILE *fp;fp=freopen("test.txt","r",stdin);gets(getstr); 阅读全文
posted @ 2013-07-16 22:28 jw_lee 阅读(153) 评论(0) 推荐(0) 编辑

摘要: 做C and Pointer练习时,发现scanf不能读取字符串中的空格符,会当作结尾处理。可用gets代替,用法gets(string);头文件还可以用正则表达式scanf( "%[^\n]", str );在linux中看到过,没想到C语言里也有这种用法。[]中表示要读取的范围,^表示取反,那[^\n]就是读取除回车以外的所有输入咯。只读取数字就是[0-9]。很好很强大。 阅读全文
posted @ 2013-07-16 16:01 jw_lee 阅读(221) 评论(0) 推荐(0) 编辑

摘要: externalinternal同一源文件内同一实体同一实体不同源文件内同一实体不同实体在函数外部想将一个变量声明为external不需要额外说明,而在函数内部则必须加external。static函数定义代码块之外修改标识符链接属性,从external改为internal代码块内部修改变量储存类型,从自动变量修改为静态变量,链接属性和作用域不受影响 阅读全文
posted @ 2013-07-16 10:43 jw_lee 阅读(322) 评论(0) 推荐(0) 编辑