如何在main.c中如何调用static函数怎么办
发布网友
发布时间:2022-04-23 14:50
我来回答
共2个回答
热心网友
时间:2023-10-19 10:39
你好,static在c里面可以用来修饰变量,也可以用来修饰函数。
先看用来修饰变量的时候。变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不是堆,不要弄混。
int a ;
int main()
{
int b ;
int c* = (int *)malloc(sizeof(int));
}
a是全局变量,b是栈变量,c是堆变量。
static对全局变量的修饰,可以认为是*了只能是本文件引用此变量。有的程序是由好多.c文件构成。彼此可以互相引用变量,但加入static修饰之后,只能被本文件中函数引用此变量。
static对栈变量的修饰,可以认为栈变量的生命周期延长到程序执行结束时。一般来说,栈变量的生命周期由OS管理,在退栈的过程中,栈变量的生命也就结束了。但加入static修饰之后,变量已经不再存储在栈中,而是和全局变量一起存储。同时,离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。
static对函数的修饰与对全局变量的修饰相似,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。
热心网友
时间:2023-10-19 10:39
与普通函数调用一样。
例如 main.c :
#include <stdio.h>
static int fun(int n){
return n*n;
}
int main()
{
int i;
for (i=0;i<=5;i++)
printf("%d ", fun(i)); //调用
return 0;
}
输出:0 1 4 9 16 25
如果 static函数 写在另一个文件里(例如 a3.c), 可以 include 进来,一样地调用。
a3.c 内容:
#include <stdio.h>
static int fun(int n){
return n*n;
}
main.c 内容 :
#include <stdio.h>
#include "a3.c"
int main()
{
int i;
for (i=0;i<=5;i++)
printf("%d ",fun(i));
return 0;
}
输出:0 1 4 9 16 25
热心网友
时间:2023-10-19 10:39
你好,static在c里面可以用来修饰变量,也可以用来修饰函数。
先看用来修饰变量的时候。变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不是堆,不要弄混。
int a ;
int main()
{
int b ;
int c* = (int *)malloc(sizeof(int));
}
a是全局变量,b是栈变量,c是堆变量。
static对全局变量的修饰,可以认为是*了只能是本文件引用此变量。有的程序是由好多.c文件构成。彼此可以互相引用变量,但加入static修饰之后,只能被本文件中函数引用此变量。
static对栈变量的修饰,可以认为栈变量的生命周期延长到程序执行结束时。一般来说,栈变量的生命周期由OS管理,在退栈的过程中,栈变量的生命也就结束了。但加入static修饰之后,变量已经不再存储在栈中,而是和全局变量一起存储。同时,离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。
static对函数的修饰与对全局变量的修饰相似,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。
热心网友
时间:2023-10-19 10:39
与普通函数调用一样。
例如 main.c :
#include <stdio.h>
static int fun(int n){
return n*n;
}
int main()
{
int i;
for (i=0;i<=5;i++)
printf("%d ", fun(i)); //调用
return 0;
}
输出:0 1 4 9 16 25
如果 static函数 写在另一个文件里(例如 a3.c), 可以 include 进来,一样地调用。
a3.c 内容:
#include <stdio.h>
static int fun(int n){
return n*n;
}
main.c 内容 :
#include <stdio.h>
#include "a3.c"
int main()
{
int i;
for (i=0;i<=5;i++)
printf("%d ",fun(i));
return 0;
}
输出:0 1 4 9 16 25
热心网友
时间:2023-10-19 10:39
你好,static在c里面可以用来修饰变量,也可以用来修饰函数。
先看用来修饰变量的时候。变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不是堆,不要弄混。
int a ;
int main()
{
int b ;
int c* = (int *)malloc(sizeof(int));
}
a是全局变量,b是栈变量,c是堆变量。
static对全局变量的修饰,可以认为是*了只能是本文件引用此变量。有的程序是由好多.c文件构成。彼此可以互相引用变量,但加入static修饰之后,只能被本文件中函数引用此变量。
static对栈变量的修饰,可以认为栈变量的生命周期延长到程序执行结束时。一般来说,栈变量的生命周期由OS管理,在退栈的过程中,栈变量的生命也就结束了。但加入static修饰之后,变量已经不再存储在栈中,而是和全局变量一起存储。同时,离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。
static对函数的修饰与对全局变量的修饰相似,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。
热心网友
时间:2023-10-19 10:39
与普通函数调用一样。
例如 main.c :
#include <stdio.h>
static int fun(int n){
return n*n;
}
int main()
{
int i;
for (i=0;i<=5;i++)
printf("%d ", fun(i)); //调用
return 0;
}
输出:0 1 4 9 16 25
如果 static函数 写在另一个文件里(例如 a3.c), 可以 include 进来,一样地调用。
a3.c 内容:
#include <stdio.h>
static int fun(int n){
return n*n;
}
main.c 内容 :
#include <stdio.h>
#include "a3.c"
int main()
{
int i;
for (i=0;i<=5;i++)
printf("%d ",fun(i));
return 0;
}
输出:0 1 4 9 16 25