摘要:
先看一个例子:#include<iostream>usingnamespace std;char *fun(void){ char *p="hello the world"; char buffer[] = "hello the world"; return p; //这里为什么可以返回局部定义的指针?// return buffer; //这里为什么不可以返回局部定义的数组名?}int main(void){ char *s; s=fun(); printf("%s\n",s); return 0;}这里返回的是... 阅读全文
摘要:
Segment fault 之所以能够流行于世,是与Glibc库中基本所有的函数都默认型参指针为非空有着密切关系的。来自:http://oss.lzu.edu.cn/blog/article.php?uid_7/tid_700.html#comment背景最近一段时间在linux下用C做一些学习和开发,但是由于经验不足,问题多多。而段错误就是让我非常头痛的一个问题。不过,目前写一个一千行左右的代码,也很少出现段错误,或者是即使出现了,也很容易找出来,并且处理掉。那什么是段错误?段错误为什么是个麻烦事?以及怎么发现程序中的段错误以及如何避免发生段错误呢?一方面为了给自己的学习做个总结,另一方面由 阅读全文
摘要:
有这样一个函数f(n),对于任意正整数n,它表示从 0 到 n 之间出现“1”的个数,比如 f(1) = 1, f(13) = 6,请列出从 1 到 1234567890 中所有的 f(n) = n 的n, 要求准确快速.相信很多人都能立刻得出以下的解法:for(n:N){判断n包含1的个数;累加计数器;}这是最直接的解法,但遗憾的是,时间复杂程度为O(N*logN)。因为还需要循环判断当前的n的各位数,该判断的时间复杂程度为O(logN)。接下来就应该思考效率更高的解法了。说实话,这道题让我想起另外一道简单的算法题:N为正整数,计算从1到N的整数和。很多人都采用了循环求解。然后利用初等数学知 阅读全文