全局变量:使用全局变量在函数之间共享数据;
自动变量:超出作用域后,他们在堆栈上分配的内存会自动被释放;
静态变量:使用static修饰的变量,也是在函数内定义;
静态变量与自动变量对比:
1.静态变量虽然定义在函数内,但是函数退出后不会删除,仍会保留下来;
2.自动变量每次进入变量作用域时都会初始化一次,而静态变量只在程序启动第一次进入作用域时初始化一次;
3.静态变量只能在其声明的函数内可见,但它是一个全局变量;
c语言结束程序的方式:
1.main执行到结尾,调用return语句,程序结束;
2.调用abort()方法,程序非正常结束;#include <stdlib.h>
3.调用exit(0)方法,程序正常结束;调用exit(1)方法,程序非正常结束;#include <stdlib.h>
#include <stdio.h> #include <stdlib.h> //函数声明 int sum(int, int); int product(int, int); int different(int, int); //c语言就是由许多函数组成的,其中main是执行的起点,函数之间互相调用 int main() { printf("函数指针使用方法:\n"); int a = 10, b = 5; int result = 0; int (*pfun)(int, int); //声明一个函数指针 pfun = sum; //指针传递 result = pfun(a, b); printf("result: %d\n", result); exit(1); pfun = different; result = pfun(a, b); printf("result: %d\n", result); pfun = product; result = pfun(a, b); printf("result: %d\n", result); printf("\n"); //函数指针数组 int (*pfuns[3])(int, int); //声明一个函数指针数组 指针是一个变量,函数指针可以像其他变量一样使用 pfuns[0] = sum; pfuns[1] = different; pfuns[2] = product; int i = 0; while (i < 3) { result = pfuns[i](a, b); printf("result: %d\n", result); i++; } printf("\n"); printf("%d", sum(5, 6)); printf("%d", sum(5, 6)); printf("%d", sum(7, 8)); return 0; } int sum(int x, int y) { static int su = 0; su += x; return x + y; } int product(int x, int y) { return x * y; } int different(int x, int y) { return x - y; }