C语言中static关键字的两个作用:文件与函数作用域

C语言中的静态关键字具有两个函数,一个是文件的范围,另一个是函数范围。

C语言中static关键字的两个作用:文件与函数作用域

1。文件操作域

文件操作域关键字静态的作用是,静态中所述的全局变量和函数状态不得由其他文件引用,例如:

//这是mystr.c文件的内容

#包括

静态int num = 10;

int mynum = 100;

静态int str_len(char *str)

返回strlen(str);

int mystr_len(char *str)

返回str_len(str) + num;

当使用静态关键字添加mystr.c文件中的str_len函数时,您无法在其他位置重复使用此函数,例如,您无法编写以下内容:

//这是main.c的内容

#包括

int main()

int len;

len = str_len(“ H​​ello,world \ n”);

printf(“%d%d \ n”,num,len)

返回0;

gcc main.c mystr_len.c

它不会被编译,因为MyStr.C中的NUM变量和STR_LEN函数使用静态关键字,从而导致它们在Mystr.C中使用。例如,文件中的mystr_len函数可以引用num变量和str_len函数。

//这是main.c的内容

#包括

int main()

int len;

len = mystr_len(“你好,世界\ n”);

printf(“%d%d \ n”,my_num,len)

返回0;

当不使用静态关键字时,相当于extern,也就是说

int mystr_len(char *str)

返回str_len(str) + num;

和

extern int mystr_len(char *str)

返回str_len(str) + num;

是一样的。

2。功能域

静态的另一个用途是函数内部的静态变量。最常用的情况是

INT *测试

int num = 100;

int *ptr =#

返回ptr;

int main()

printf(“%d \ n”, *test);

返回0;

此功能返回整数NUM的指针。在主函数中的打印*测试将具有段错误,因为只能在测试中访问NUM作为测试功能。以下过程是正确的。

INT *测试

静态int num = 100;

int *ptr =#

返回ptr;

int main()

printf(“%d \ n”, *test);

返回0;

在此程序中,数字变量添加了一个关键字静态。功能运行后,仍然可以在其他地方引用它,但是无法通过变量名称直接访问它。相反,有必要通过指针间接访问。不在功能堆栈中。读者可以将其视为一种特殊的全局变量,但是其他地方只能通过指针访问,并且不能通过变量名称直接访问。

你可能想看:
« 上一篇
下一篇 »

相关推荐

FreeBasic:强大免费开源的64位basic编译器及应用优势

2025年05月10日

82阅读

脊柱侧弯矫正方法大盘点:运动康复、支具矫正等多种方式

2025年05月09日

87阅读

如何在winForm标题栏去掉标题文字且任务栏图标正常显示

2025年05月09日

86阅读

十一黄金周促销广告词大全,国庆购物狂欢等你来

2025年05月09日

78阅读

关闭快速编辑模式及插入模式,设置控制台指定文字颜色举例

2025年05月09日

63阅读

黄金搭档低糖高钙饮品包装及成分功效全解析,适合人群要知晓

2025年05月09日

91阅读