C语言函数范围是指函数的作用域,也就是函数可以访问的变量的范围。在C语言中,函数的作用域可以分为全局作用域、文件作用域、函数内部作用域三种。
全局作用域是指在编写代码时,定义在所有函数之外的变量,这些变量就是全局变量,它们在系统中所有的函数中都是可见的。例如:
int a = 10; // 全局变量a
文件作用域是指在一个文件中定义的变量,这些变量在当前文件中所有的函数都是可见的。例如:
static int b = 20; // 文件作用域b
函数内部作用域是指在一个函数内部定义的变量,这些变量在当前函数内都是可见的。例如:
int c = 30; // 函数内部作用域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(); // Abnormal program end
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(1); // Exit with status code 1
C 练习实例71 C 语言经典100例题目:编写input()和output()函数输入,输出5个学生的数据记录。程序分析:无。程序源代码://Crea...
C 练习实例87 C 语言经典100例题目:回答结果(结构体变量传递)。 程序分析:无。程序源代码://Created by www..cn on 15/11/9...
C 练习实例91 C 语言经典100例题目:时间函数举例1程序分析:无。程序源代码://Created by www..cn on 15/11/9.//Copyright2015...
C 练习实例95 C 语言经典100例题目:简单的结构体应用实例。程序分析:无。程序源代码://Created by www..cn on 15/11/9.//Copy...