当前位置:网站首页>Function of static
Function of static
2022-07-05 07:35:00 【luoganttcc】
C In language static The role of
classification Programming technology
stay C In language ,static It's easy to lead us astray , In fact, it has three functions .
(1) Let's introduce the first and most important one : hide .
When we compile multiple files at the same time , All without static Global variables and functions of prefixes have global visibility . To understand this sentence , Let me give an example . We need to compile two source files at the same time , One is a.c, The other is main.c.
Here is a.c The content of :
Code in git
a.c File code
char a = 'A'; // global variable
void msg()
{
printf("Hello\n");
}
Here is main.c The content of :
main.c File code
int main(void)
{
extern char a; // extern variable must be declared before use
printf("%c ", a);
(void)msg();
return 0;
}
The result of the program running is :
A Hello
You may ask : Why is it a.c Global variables defined in a And the function msg Can be in main.c Use in ? As I said before , All without static Global variables and functions of prefixes have global visibility , Other source files can also be accessed . In this case ,a Global variable ,msg Is the function , And they didn't add static Prefix , So for another source file main.c Is visible .
If you add static, Will hide from other source files . For example, in a and msg Add before the definition of static,main.c You can't see them . With this feature, functions and variables with the same name can be defined in different files , You don't have to worry about naming conflicts .static Can be used as a prefix for functions and variables , For functions ,static The role of is limited to hiding , And for variables ,static There are also the following two functions .
(2)static The second function of is to keep the variable content persistent .
Variables stored in the static data area are initialized as soon as the program starts to run , It's also the only initialization . There are two types of variables stored in static storage : Global variables and static Variable , Just compared to global variables ,static You can control the visible range of variables , At the end of the day static Or for hiding . Although this usage is not common , But let me give an example .
#include <stdio.h>
int fun(void){
static int count = 10; // In fact, this assignment statement has never been executed
return count--;
}
int count = 1;
int main(void)
{
printf("global\t\tlocal static\n");
for(; count <= 10; ++count)
printf("%d\t\t%d\n", count, fun());
return 0;
}
The result of the program running is :
global local static
1 10
2 9
3 8
4 7
5 6
6 5
7 4
8 3
9 2
10 1
(3)static The third function of is default initialization to 0. In fact, global variables also have this property , Because global variables are also stored in the static data area . In the static data area , The default value of all bytes in memory is 0x00, Sometimes this feature can reduce the workload of programmers . For example, initialize a sparse matrix , We can set all the elements one by one 0, And then put it not 0 Assign values to several elements of . If defined as static , It eliminates the need to start with 0 The operation of . Another example is to use a character array as a string , But I think every time I add... At the end of the character array ’\0’ too troublesome . If you define a string as static , It saves the trouble , Because it was ’\0’. You might as well do a small experiment to verify .
#include <stdio.h>
int a;
int main(void)
{
int i;
static char str[10];
printf("integer: %d; string: (begin)%s(end)", a, str);
return 0;
}
The program runs as follows
integer: 0; string: (begin)(end)
Finally, static Make a one sentence summary of the three functions of . First static The main function of is to hide , Second, because static Variables are stored in static storage , So it has persistence and default values 0.
边栏推荐
- Basic operation of external interrupt (keil5)
- Mouse click fireworks explosion effect
- Self summary of college life - freshman
- Import CV2, prompt importerror: libcblas so. 3: cannot open shared object file: No such file or directory
- Typecho adds Baidu collection (automatic API submission plug-in and crawler protocol)
- Pagoda create multiple sites with one server
- Install deeptools in CONDA mode
- [untitled]
- Simple operation of running water lamp (keil5)
- Opendrive record
猜你喜欢

SQL JOINS

Word import literature -mendeley

What is deep learning?

【idea】Could not autowire. No beans of xxx type found

Build your own random wallpaper API for free

Light up the running light, rough notes for beginners (1)

UE5热更新-远端服务器自动下载和版本检测(SimpleHotUpdate)

第 2 章:小试牛刀,实现一个简单的Bean容器

Rough notes of C language (2) -- constants

Using GEE plug-in in QGIS
随机推荐
The golang timer uses the stepped pit: the timer is executed once a day
golang定时器使用踩的坑:定时器每天执行一次
Matrix keyboard scan (keil5)
Shadowless cloud desktop - online computer
What is soda?
I implement queue with C I
Light up the running light, rough notes for beginners (1)
And play the little chestnut of dynamic agent
The SQL implementation has multiple records with the same ID, and the latest one is taken
Charles- unable to grab bags and surf the Internet
使用go语言读取txt文件写入excel中
Leetcode solution - number of islands
Let me teach you how to develop a graphic editor
[MySQL] database knowledge record
ModuleNotFoundError: No module named ‘picamera‘
Professional knowledge of public security -- teacher bilitong
并查集理论讲解和代码实现
Today, share the wonderful and beautiful theme of idea + website address
Thunderbird tutorial \ easy to use mail client
Basic series of SHEL script (II) syntax + operation + judgment