static关键字的3种用法
Class中的static的使用
static成员
static成员函数
函数参数中没有隐含的this指针
1 |
|
static 3种类型含义
多文件之间全局使用static限制变量的作用域在此编译单元内部.
尝试链接其他编译单元作用域内部的符号报错
undefined reference
,未定义引用1
2
3/usr/bin/ld: /tmp/ccYxdT4J.o: in function `testFunc':
main.c:(.text+0x1d): undefined reference to `add'
collect2: error: ld returned 1 exit statusmain.c:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#include <me.h>
// int func(int,int);
int add(int a,int b);
int testFunc(int a,int b)
{
printf("%d\n",add(a,b));
return 0;
}
int main()
{
testFunc(1,2);
return 0;
}unit.c:
1
2
3
4
5
6
7
8
9
10
11static int add(int,int);
int func(int a,int b)
{
return add(a,b);
}
static inline int add(int a,int b)
{
return a + b;
}
class中static成员表示在所有 实例之间共享内存,
static函数表示实现不带this指针,为类服务,而不是具体对象
locate作用域,static表示变量将 在所在作用域内一直存在下去,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#include <unistd.h>
#include <time.h>
#include "me.h"
#include <string.h>
void func1()
{
static int var = 1;
printf("%d\n",var++);
}
void func2()
{
int var = 1;
printf("%d\n",var++);
}
int main()
{
for(int i=0; i<5; i++)
{
func1();
func2();
printf("\n");
}
}
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!