您的位置:58编程 > c语言函数范围 C 函数范围

c语言函数范围 C 函数范围

2023-03-23 14:33 C语言教程

c语言函数范围 C 函数范围

c语言函数范围

C语言函数范围是指函数的作用域,也就是函数可以访问的变量的范围。在C语言中,函数的作用域可以分为全局作用域、文件作用域、函数内部作用域三种。

全局作用域是指在编写代码时,定义在所有函数之外的变量,这些变量就是全局变量,它们在系统中所有的函数中都是可见的。例如:

int a = 10;  // 全局变量a

文件作用域是指在一个文件中定义的变量,这些变量在当前文件中所有的函数都是可见的。例如:

static int b = 20;  // 文件作用域b

函数内部作用域是指在一个函数内部定义的变量,这些变量在当前函数内都是可见的。例如:

int c = 30;  // 函数内部作用域c

C 函数范围

学习C - C函数范围

静态变量

静态变量可以保留从一个函数调用到的信息下一个。

您可以使用此声明声明一个静态变量 count :

static int count = 0;

单词static是一个关键字。

单词static是一个关键字。...

被声明为静态的变量的初始化只发生一次,就在开头程序。

虽然静态变量仅在包含其声明的函数内可见,它本质上是一个全局变量。

以下代码显示了静态变量和自动变量之间的差异。


    #include <stdio.h> 

    // Function prototypes 
    void test1(void); 
    void test2(void); 
      
    int main(void) { 
      for(int i = 0 ; i < 5 ; ++i) { 
        test1(); 
        test2(); 
      } 
      return 0; 
    } 
    // Function test1 with an automatic variable 
    void test1(void) 
    { 
      int count = 0; 
      printf("test1   count = %dn", ++count ); 
    } 

    // Function test2 with a static variable 
    void test2(void) 
    { 
      static int count = 0; 
      printf("test2   count = %dn", ++count ); 
    } 

上面的代码生成以下结果。



在函数之间共享变量

为了在函数之间共享变量,在程序文件的开头声明一个变量所以他们“超出了功能的范围。

这些被称为全局变量,因为它们“可以随时随地访问。


    #include <stdio.h> 
      //w w w. jav  a  2  s  .  c  o  m
    int count = 0;                         // Declare a global variable 
      
    // Function prototypes 
    void test1(void); 
    void test2(void); 
      
    int main(void) { 
      int count = 0;                       // This hides the global count 
      
      for( ; count < 5 ; ++count) { 
        test1(); 
        test2(); 
      } 
      return 0; 
    } 
      
    void test1(void) { 
      printf("test1   count = %dn", ++count); 
    } 
    void test2(void) { 
      printf("test2   count = %dn", ++count); 
    } 

上面的代码生成以下结果。



函数递归

一个函数可以调用自身。这称为递归。

调用自身的函数也必须包含停止过程的方式。

以下代码显示如何计算整数的阶乘。

任何整数的阶乘是所有从1到的整数的乘积整数本身。


    #include <stdio.h> 
      
    unsigned long long factorial(unsigned long long); 
      
    int main(void) { 
      unsigned long long number = 10LL; 
      printf("The factorial of %llu is %llun", number, factorial(number)); 
      return 0; 
    } 
    // A recursive factorial function 
    unsigned long long factorial(unsigned long long n) { 
      if(n < 2LL) 
        return n; 
         
      return n*factorial(n - 1LL); 
    } 

上面的代码生成以下结果。

abort()函数

调用abort()函数会导致程序异常终止。

它不需要参数。

当你想结束一个程序时,这样调用:

abort();                          // Abnormal program end

exit()和atexit()函数

exit()函数导致程序的正常终止。

该函数需要一个类型的参数int表示终止时的程序状态。

参数可以为0或EXIT_SUCCESS以指示a成功终止,并将其返回到主机环境。

例如:

exit(EXIT_SUCCESS);               // Normal program end

如果参数是EXIT_FAILURE,则将向主机环境返回故障终止的指示。

您可以通过调用atexit()注册您自己的函数,由exit()调用。

您调用atexit()函数来标识要执行的函数当应用程序终止时。

这里的你怎么可能这样做:

void CleanUp(void);// Prototype of function

if(atexit(CleanUp)) 
  printf("Registration of function failed!n"); 
 

_Exit()函数

_Exit()函数与exit()基本上执行相同的工作。

_Exit()不会调用任何注册的函数。

你调用_Exit()像这样:

_Exit(1);                         // Exit with status code 1 
阅读全文
以上是58编程为你收集整理的c语言函数范围 C 函数范围全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 58编程 58biancheng.com 版权所有 联系我们
桂ICP备12005667号-32 Powered by CMS