LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: zqpytrjb

【疑惑】这里究竟有几个会C语言的人?

[复制链接]
发表于 2005-4-16 09:48:37 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2005-4-17 17:25:57 | 显示全部楼层
Post by doubleelec
呵呵,楼上何苦呢。

虽然是C语言很灵活,也没必要非钻它的空子不可呀。

不是钻空子,只是还事实以原貌


Post by 锋锋
通过指针引用,得到的只是“脏数据”。
使用指向“栈内存”的指针是错误的。

要看引用的数据本身在什么地方
引用static的数据,没有任何问题
static在BSS段,前面已经说了

至于一个变量具体在什么地方
gcc -S 遍成汇编看看
或者使用objdump, readelf, nm看看就知道了
再不行去看看apue,里面有个章节讲这个问题
还有smash the stack for fun and profit
回复 支持 反对

使用道具 举报

发表于 2005-4-18 13:39:02 | 显示全部楼层
谢谢楼上各位。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-19 00:59:57 | 显示全部楼层
Post by noword
第一道题写成 (unsigned long)(60*60*24*365) 比较好吧,一看就懂,便于日后维护。
否则,后面的UL容易被人忽视,就是看到了,不熟悉該语法的人也要1,2秒才能反应过来。

:beat
这样不行,
如果已经乘溢出了,你再转换也没用
最保险的写法是(60*60*24*365UL)
因为编译器是从右往左处理的
所以你的第一个数是unsigned long是最安全的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-19 01:02:41 | 显示全部楼层
Post by caicheng
看来这些书多太老了,谁推荐一两本新点的c方面的书!


我不是推荐了那么多本好书吗?
回复 支持 反对

使用道具 举报

发表于 2005-4-19 11:00:45 | 显示全部楼层
说实话,我没看明白你第一题的意思。但这还是不影响我写程序。不要以为和主管出了这么些题目就感觉自己很高傲。大家也没必要在这里为这种题目浪费时间。
回复 支持 反对

使用道具 举报

发表于 2005-4-19 12:56:21 | 显示全部楼层
我两个都能在两秒内答出来
我也会C熟悉
不能说精通~~还算
可是我不愿意去你们公司
就你们这招聘得态度~~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-19 21:39:00 | 显示全部楼层
Post by fryrice
我两个都能在两秒内答出来
我也会C熟悉
不能说精通~~还算
可是我不愿意去你们公司
就你们这招聘得态度~~~~


哈哈,我可不是招聘的,
我还没混到主管呢。 :p
回复 支持 反对

使用道具 举报

发表于 2005-4-20 09:02:25 | 显示全部楼层
好像你用的是VS .NET吧。
你写的代码中去掉static。
我用
gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)
编译运行,结果仍是
1
1

Post by 锋锋
  1. #include <stdio.h>
  2. int * p=NULL;
  3. int test1(void)
  4.   {
  5.      int  i = 1;
  6.     p = &i;
  7.    printf("%d\n",i);
  8.    return(0);
  9.   }
  10. int test2(void)
  11. {
  12.    printf("%d\n",*p);
  13.    return(0);
  14. }
  15. int main(void)
  16. {
  17.     test1();

  18.     test2();

  19.    return(0);
  20. }

复制代码



结果为:
1
1


函数内static变量不是存储在“栈内存"中。汗一下...  
回复 支持 反对

使用道具 举报

发表于 2005-4-20 09:30:19 | 显示全部楼层
Post by Illidan
好像你用的是VS .NET吧。
你写的代码中去掉static。
我用
gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)
编译运行,结果仍是
1
1

请好好理解前面的答复!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表