概述
在C语言中,static和extern是两个关键字,它们的作用主要与变量和函数的作用域和链接有关。而指针函数则是C语言中比较重要的一个概念,用于返回指针类型数据的函数。本文将从这三个方面进行详细讲解。
static关键字
static是一个非常常用的关键字,在C语言中主要有两个作用:
-
改变变量的作用域。当一个变量被定义为static时,它的作用域仅限于所在的源文件中,不会被其他源文件访问到。
-
保留变量的值。在函数中使用static定义的变量,在函数调用结束后不会被销毁,而是保留其值,下一次再调用这个函数时会使用上一次的值。
下面是一个使用static定义变量的示例程序:
#include <stdio.h>
int func(void);
int main()
{
for(int i=0; i<5; i++)
{
printf("%d\n", func());
}
return 0;
}
int func(void)
{
static int count = 0;
count++;
return count;
}
运行结果:
1
2
3
4
5
extern关键字
extern是另一个常用的关键字,在C语言中主要有两个作用:
-
声明一个变量或函数,表明其在其他源文件中定义或实现。
-
引用其他源文件中定义的变量和函数。
下面是一个使用extern声明和引用变量的示例程序:
首先,我们定义一个全局变量:
// file1.c
int global_var = 10;
然后,我们在另一个源文件中引用这个变量:
// file2.c
#include <stdio.h>
extern int global_var;
int main()
{
printf("global_var = %d\n", global_var);
return 0;
}
我们将这两个文件编译并链接,得到可执行文件:
gcc -c file1.c
gcc -c file2.c
gcc file1.o file2.o -o app
运行结果:
global_var = 10
指针函数
指针函数是一种函数,它返回指针类型的值。C语言中,常用的指针类型有int *、char *等。
下面是一个返回int类型指针的函数示例程序:
#include <stdio.h>
int *max(int *a, int *b);
int main()
{
int x = 10;
int y = 20;
int *p = max(&x, &y);
printf("max number is %d\n", *p);
return 0;
}
int *max(int *a, int *b)
{
if(*a > *b)
{
return a;
}
else
{
return b;
}
}
这个程序定义了一个返回int类型指针的函数,名为max。max函数接受两个int类型的指针参数,比较这两个指针指向的值的大小,返回指向较大值的指针。在主函数中,我们定义两个整型变量x和y,并调用max函数,将返回指针赋值给int类型指针p,并打印出p指向的值。
运行结果:
max number is 20
总结
本文详细讲解了static、extern和指针函数的概念和用法,并提供了示例程序以加深理解。熟练掌握这些基础知识是程序员入门的重要一步。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入理解C语言 static、extern与指针函数 - Python技术站