本文最后更新于2022年02月14日,已超过13天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
#include <stdio.h>
void main(){
int i,a,b; // 定义局部变量 i,a,b
i = i + 1; // 可以使用 i
{
int c;
c = a + b; // c 在此范围内有效; a, b在此范围内有效
}
c = c + 1; // c 在此范围内无效
}
int add(int x,int y){
int j; // 定义局部变量 j
j = x + y; // 可以使用 j
i = x + y; // 不能使用main函数里局部变量i,系统会提示 i 未声明
}
#include <stdio.h>
int i,j,a,b, n = 5; // 定义全局变量
void main(){
a = 5;
b = 6;
i = a + b;
{
j = a - b; // c在此范围内有效;a,b在此范围内有效
}
int add(int x); // 函数声明
printf("i = %d, j = %d, m = %d\n",i,j,add(5));
}
int add(int x){
int m;
m = n + 1; // 可以使用n
return m;
}
如果外部变量与局部变量同名,即全局变量与局部变量同名时,局部变量优先!
#include <stdio.h>
int a = 3, b = 5; // a,b为外部变量
void main()
{
int a = 8; // a为局部变量
printf("%d\n", max(a, b));//这里a为局部变量,b为全局变量
}
max(int a,nt b)
{
int c;
c = a > b ? a : b; // 形参a、b作用范围只在max函数里
return (c);
}
int f(int a) // 定义f函数,a为形参
{
auto int b,C=3; // 定义b、C为自动变量
}
auto int a,b,c=3;
与 int a,b,c=3;
二者等价#include <stdio.h>
void main()
{
int f(int a);
int a = 0, i;
for (i = 0; i < 3; i++) {
printf("%d\n", f(a));
}
}
int f(int a) { // 每调用一次,开辟新 a 和 b,但是 c 没有
auto b = 0;
static c = 0;
b++;
c++;
return (a + b + c);
}
求1-5的阶
#include <stdio.h>
void main()
{
int fac(int a);
int i;
for (i = 1; i <= 5; i++) {
printf("%d的阶乘=%d\n",i, fac(i));
}
}
int fac(int a) {
static int f = 1;
f = f * a;
return (f);
}
#include <stdio.h>
void main()
{
long fac(long);
long i, n;
printf("请输入一个整数:");
scanf_s("%ld", &n);
for (i = 1; i <= n; i++){
printf("%ld的阶乘=%ld\n", i, fac(i));
}
}
long fac(long n){
register long i, f = 1; // 定义寄存器变量
for (i = 1; i <= n; i++) {
f = f * i;
}
return(f);
}
在一个文件内声明外部变量
#include <stdio.h>
void main()
{
int max(int, int);
extern A, B; // 声明外部变量
printf("%d\n", max(A, B));
}
int A = 15, B = 8; // 定义外部变量
int max(int x, int y){
int z;
z = x > y ? x : y;
return(z);
}
在多文件的程序中声明外部变量,用extern将外部变量的作用域扩展到其他文件。
#include<stdio.h>
int A; //定义外部变量
void main(){
printf("%d\n",A++);
}
extern A = 100; //声明A为一个已定义的外部变量
#include<stdio.h>
static int A; // 定义外部变量
void main() {
printf("%d\n", A++);
}
extern int A; // 无法使用 全局变量
void fun(int n) {
A = A * n;
}
int a;
)声明。extern a;
)。int a;
而言,它既具声明,又是定义。extern a;
而言,它是声明而不是定义。static
类型标识符
函数名(形参表)
static int fun( inta, intb)
extern int fun (int a,int b)
这样,函数fun就可以为其他文件调用。有一个字符串,内有若干个字符,输入一个字符,要求程序将字符串中该字符删去。用外部函数实现。
#include<stdio.h>
void main() {
extern void estring(char str[]);
extern void dstring(char str[], char ch);
extern void pstring(char str[]);
char c, str[80];
printf("请输入一串字符:\n");
estring(str);
printf("请输入一个要删除的字符:\n");
scanf_s("%c", &c);
dstring(str, c);
pstring(str);
}
void dstring(char str[], char ch) {
int i, j;
for (i = j = 0; str[i] != '\0'; i++) {
if (str[i] != ch) {
str[j] = str[i];
j++;
}
}
str[j] = '\0';
}
#include <stdio.h>
extern void estring(char str[80]) {
gets(str);
}
#include <stdio.h>
void pstring(char str[]) {
printf("%s\n", str);
}