当前位置:首页 > 健康 >

c语言static的作用(c语言static关键字的作用)

来源:原点资讯(www.yd166.com)时间:2022-11-25 13:59:49作者:YD166手机阅读>>

C语言是一门面向结构化的高级编程语言(也有人认为它是中级语言),用于通用编程需求。基本上,C语言是其基本语法和库函数的集合,因此程序员定义自己的函数并且将其包含在C语言库中也是很方便的。

c语言static的作用,c语言static关键字的作用(1)

C语言的主要用途是编写其他编程语言的编译器、操作系统、文本编辑器、后台服务程序、驱动程序、数据库、脚本语言的解释器,以及其他各种实用的程序。

C语言甚至能够编写自己的编译器。

如果读者对C语言感兴趣,并且希望得到一份C语言程序员的工作,那么下面这 7 道面试题将会非常有趣。

问题1,C语言的显著特点是什么?

可移植。C语言是一种与平台无关的编程语言,不使用平台依赖库的C语言程序可以轻易移植到各种平台。模块化。我们能够轻易的将一个非常大的C语言项目拆分成若干个小的模块,并逐个实现,最终组合解决该大项目。灵活。C语言给与程序员最大的自由,因此只要某种代码C语言的语法没有禁止,程序员就可使用。也即所谓的“法无禁止即可行”。

c语言static的作用,c语言static关键字的作用(2)

问题2,什么是C语言中的“悬空指针”?

C语言中的指针可以指向一块内存,如果这块内存稍后被操作系统回收(被释放),但是指针仍然指向这块内存,那么,此时该指针就是“悬空指针”。下面这段C语言代码是一个例子,请看:

void *p = malloc(size);

assert(p);

free(p); // 现在 p 是“悬空指针”

C语言中的“悬空指针”会引发不可预知的错误,而且这种错误一旦发生,很难定位。这是因为在 free(p) 之后,p 指针仍然指向之前分配的内存,如果这块内存暂时可以被程序访问并且不会造成冲突,那么之后使用 p 并不会引发错误。

最难调试的 bug 总是不能轻易复现的 bug,对不?

所以在实际的C语言程序开发中,为了避免出现“悬空指针”引发不可预知的错误,在释放内存之后,常常会将指针 p 赋值为 NULL:

void *p = malloc(size);

assert(p);

free(p);

// 避免“悬空指针”

p = NULL;

这么做的好处是一旦再次使用被释放的指针 p,就会立刻引发“段错误”,程序员也就能立刻知道应该修改C语言代码了。

c语言static的作用,c语言static关键字的作用(3)

问题3,C语言中的“野指针”是什么?

“悬空指针”是指向被释放内存的指针,“野指针”则是不确定其具体指向的指针。“野指针”最常来自于未初始化的指针,例如下面这段C语言代码:

void *p;// 此时 p 是“野指针”

因为“野指针”可能指向任意内存段,因此它可能会损坏正常的数据,也有可能引发其他未知错误,所以C语言中的“野指针”危害性甚至比“悬空指针”还要严重。在实际的C语言程序开发中,定义指针时,一般都要尽量避免“野指针”的出现(赋初值):

void *p = NULL;

void *data = malloc(size);

问题4,C语言中的 static 函数有什么用?

相信读者在不少的C语言项目中看到类似于下面这样的 static 函数,为什么使用 static 关键字修饰函数呢?这么做有什么用呢?

static void foo(){ ...}

稍大的C语言项目中一般都会出现这样的 static 函数(静态函数),C语言中的静态函数最主要的特点就在于其作用域——仅限所述文件。例如在 fun.c 文件中定义的 static 函数,不能在如 main.c 等其他文件中使用。

读者可以尝试使用 extern 关键字引入其他文件中定义的 static 函数。

C语言中 static 函数的这个特性使得它常常被定义在 .h 文件中,一般和 inline 关键字一起使用,以获得 define 函数式宏定义类似的高效率。

c语言static的作用,c语言static关键字的作用(4)

首页 12下一页

栏目热文

static 关键字的作用(static的三种作用)

static 关键字的作用(static的三种作用)

static,即静态声明。它在 作用域、存储方式、生命周期 等各方面影响一个变量或函数。文章将从 局部变量、全局变量、普...

2022-11-25 14:00:58查看全文 >>

c语言static使用举例(c语言必背100程序)

c语言static使用举例(c语言必背100程序)

这篇介绍C语言里函数的定义、子函数的使用。接着介绍变量的作用域,定义全局变量、静态变量、只读变量、变量初始化等等。一、函...

2022-11-25 14:29:37查看全文 >>

static在c语言中的用法(c语言顺口溜)

static在c语言中的用法(c语言顺口溜)

一、位操作运算符 含义 运算符 含义& 按位与 ~ 取反| 按位或 << 左移^ 按位异或 >>...

2022-11-25 14:01:09查看全文 >>

static声明的优缺点(static的底层原理)

static声明的优缺点(static的底层原理)

文章目录面向对象的进阶面向对象进阶的第一篇, 主要讲解内容如下:static关键字 : 开发中如何定义一个共享的信息,给...

2022-11-25 14:24:41查看全文 >>

static方法的作用(static怎么使用)

static方法的作用(static怎么使用)

一、聊一聊Static与JVMJAVA 把内存分为栈内存和堆内存,其中栈内存用来存放一些基本类型的变量、数组和对象的引用...

2022-11-25 14:18:45查看全文 >>

c语言static(c语言static的作用举例)

c语言static(c语言static的作用举例)

接上文:C语言 static 关键字的常见用法有三种:用于局部变量的修饰符;用于全局变量的修饰符;用于函数的修饰符。1、...

2022-11-25 14:24:49查看全文 >>

static是关键字还是标识符(static 作用域)

static是关键字还是标识符(static 作用域)

static - 分包今日目标:1 能够理解什么是分类分包2 能够掌握static关键字的使用3 能够使用分包写出学生管...

2022-11-25 14:09:06查看全文 >>

c语言中static三种用法(c语言面试基础知识)

c语言中static三种用法(c语言面试基础知识)

C 的static关键字可修饰类成员变量/方法,表示变量/方法不从属于特定对象,而是属于类的。仔细琢磨静态成员变量,会...

2022-11-25 14:26:55查看全文 >>

static的意义(static作用)

static的意义(static作用)

特点特点:一种路由的方式,路由项(routing entry)由手动配置,而非动态决定。与动态路由不同,静态路由是固定的...

2022-11-25 14:33:05查看全文 >>

c语言static的用法(c语言union)

c语言static的用法(c语言union)

如何学习c语言,在学习C语言的时候一定要掌握什么知识?在这里我给大家写出了一点点小计划,不喜勿喷,谢谢!一、要学习的书《...

2022-11-25 14:44:48查看全文 >>

文档排行