LinuxSir.cn,穿越时空的Linuxsir!

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

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

[复制链接]
发表于 2005-4-14 22:03:50 | 显示全部楼层
Post by kj501
函数内定义的静态变量,其作用域只限于函数体内。

我可以通过指针引用啊
那些只是概念上的dd
回复 支持 反对

使用道具 举报

发表于 2005-4-14 22:19:59 | 显示全部楼层
呵呵,楼上何苦呢。

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

使用道具 举报

发表于 2005-4-14 23:40:32 | 显示全部楼层
楼主有点那个了,会C的不一定是高手,而高手也不一定会C,这一点我深信不疑。
回复 支持 反对

使用道具 举报

发表于 2005-4-16 01:00:41 | 显示全部楼层
Post by nait
我可以通过指针引用啊



通过指针引用,得到的只是“脏数据”。
使用指向“栈内存”的指针是错误的。
回复 支持 反对

使用道具 举报

发表于 2005-4-16 01:12:38 | 显示全部楼层
我得承认,虽然整天鼓吹,但是我的C水平很低,代码大多是垃圾
的确是浮躁造成的!惭愧!
回复 支持 反对

使用道具 举报

发表于 2005-4-16 01:48:40 | 显示全部楼层
  1. #include <stdio.h>
  2. int * p=NULL;
  3. int test1(void)
  4.   {
  5.     static 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-16 01:56:48 | 显示全部楼层
去掉static关键字,重编译
运行结果如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2005-4-16 08:44:43 | 显示全部楼层
写过module的同志对static了解更深!
回复 支持 反对

使用道具 举报

发表于 2005-4-16 09:24:24 | 显示全部楼层
Post by 锋锋
  1. #include <stdio.h>
  2. int * p=NULL;
  3. int test1(void)
  4.   {
  5.     static 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变量不是存储在“栈内存"中。汗一下...  

我记得cu上有过关于static,malloc等在哪儿分配内存的讨论
回复 支持 反对

使用道具 举报

发表于 2005-4-16 09:48:28 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则

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