| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 338 人关注过本帖
标题:循环体也算是一个函数块吗?
只看楼主 加入收藏
uswood
Rank: 2
等 级:论坛游民
帖 子:34
专家分:16
注 册:2014-3-29
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:5 
循环体也算是一个函数块吗?
自动变量仅作用和存在于自己的函数块中,在这个代码中反复实验,都没办法在循环外调用出来count2的值,开始用static放在定义count2前边,没有用(只记得说函数还是循环结束会保留它的值,所以试着用这个,但具体搜索后看不懂无果。)
  然后试了指针,也只有当最后那句放在循环内才会有效,否则编译错误,无法找到变量。
程序代码:
#include<stdio.h>
int main(void)
{
    int count1 =1;
    do
    {
      int count2 =0;
      ++count2;
      printf("\ncount1=%d \t count2=%d",count1,count2);
      int *p =&count2;
      
    }while (++count1<=8);
      
      printf("\ncount1=%d",count1);

      printf("count2=%d",*p);/*这一句没法调用*/

    getchar();
    return 0;
    



}
2015-03-20 22:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
一對花括號劃定一個範圍。

授人以渔,不授人以鱼。
2015-03-20 22:51
uswood
Rank: 2
等 级:论坛游民
帖 子:34
专家分:16
注 册:2014-3-29
收藏
得分:0 
回复 2楼 TonyDeng
也就是说没有办法能在花括号外边调用出结果对吧   假设那个static放在 int count2前边究竟有什么用呢
2015-03-20 22:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
1.是否在區域後面可訪問,跟編譯器的實現有關,有的可以,有的不可以,通常你按不可以來使用較穩妥。
2.static是維持數據的內容不丟失的,比如你在塊內定義了static int count2這個數據,在某次使用時賦値=1,那麽即使離開了塊,這個數據也保留著(但不可訪問),到你下次再進入這個塊,會發現count2的値仍是1(它衹在定義時初始化一次),假如你這次賦値2,那麽下次它就是2。

static的數據,在可見區域外不可見,但數據卻是全局生存的,生命周期與程序一樣,程序結束,它才會消失。

授人以渔,不授人以鱼。
2015-03-20 23:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
順便補充一下:文件級的static數據,可見性在該文件(即模塊)內,不是很多人說的全局變量,在另一個.c或.cpp中的代碼,是訪問不到的,除非你後者中聲明引用外部定義過的數據(用extern聲明)。

授人以渔,不授人以鱼。
2015-03-20 23:06
uswood
Rank: 2
等 级:论坛游民
帖 子:34
专家分:16
注 册:2014-3-29
收藏
得分:0 
回复 4楼 TonyDeng
完全明白了 谢谢!
2015-03-21 10:00
快速回复:循环体也算是一个函数块吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017779 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved