c语言静态,c语言静态变量static

kodinid 22 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言静态问题,于是小编就整理了5个相关介绍c语言静态的解答,让我们一起看看吧。

  1. c语言是静态还是动态语言?
  2. c语言中的静态变量是?
  3. C语言中的静态变量到底是怎么回事?不是说static后面变量值是不变的,直到程序结束才释放,那后面的有涉?
  4. C语言静态局部变量和全局变量有什么区别?
  5. 有没有单片机(C语言编写的代码)使用的静态分析工具?

c语言是静态还是动态语言?

静态语言,是固定运行结果的语言,典型的范例就是html编写的静态页面代码,比如说创建一个表格,在html语言中表格行列数是不能变化和调整的。

动态语言,根据条件不同输出内容可能不同。例如:编写网页的asp语言,可以通过查询数据库生成动态行数的数据表。

c语言静态,c语言静态变量static-第1张图片-安济编程网
图片来源网络,侵删)

编译语言,一般情况下需要通过编译环境生成对应的可执行程序或者目标程序,才能够执行。

解释语言,在运行时对编码进行解释,直接执行。例如asp语言,就是解释型语言,不需要编译生成可执行程序。

一般来讲,C语言和java都是需要通过编译生成可执行程序或者目标程序,所以它们都是编译语言。

c语言静态,c语言静态变量static-第2张图片-安济编程网
(图片来源网络,侵删)

c语言中的静态变量是?

C语言中的静态变量是指被static关键字修饰的变量。

C语言中使用静态函数的好处

(1)静态函数会被自动分配在一个一直使用的存储区,直到退出程序,避免了调用函数的压栈出栈,速度很多

c语言静态,c语言静态变量static-第3张图片-安济编程网
(图片来源网络,侵删)

(2)static指函数的作用域仅局限于本文件。不用担心自己定义的函数是否会与其他文件的函数同名静态变量有两种类型,一种是定义在全局变量上的全局静态变量,另一种是定义在局部变量上的局部静态变量。

C语言中的静态变量到底是怎么回事?不是说static后面变量值是不变的,直到程序结束才释放,那后面的有涉?

静态变量的静态是指变量占用的地址不释放,也就是说它的地址它从头到尾一直占着,不给其他内存单元占用而已,其本身的值是可以改变的。

动态的变量的话,比如调用函数体里定义的变量,在函数执行后便释放出去,把有用的地址***贡献给其他量,释放以后如果你用指针打印这个地址的值的话,就很有可能不是原来的值了。

C语言静态局部变量和全局变量有什么区别

静态变量,就是在定义的时候,有static 修饰的变量,形式为static TYPE var_name = init_value;而动态变量,形式为TYPE var_name = init_value;即没有static 修饰。其中的=init_value均可省略。区分定义在函数外的全局变量,和函数内的局部变量,作用域,生命周期,及无显式初始化时的初始值,均有区别。

1 动态全局变量:作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量。生命周期为从程序运行到程序退出,即贯穿整个运行时间。无显式初始化时默认初始化值为0。

2 静态全局变量:作用域为当前文件,从定义/声明位置到文件结尾。生命周期为从程序运行到程序退出,即贯穿整个运行时间。无显式初始化时默认初始化值为0。

3 动态局部变量:作用域为当前函数,从定义位置,到其所在的{}的结束位置。生命周期为从函数调用到函数退出。无显式初始化时默认初始化值为随机值。

4 静态局部变量:作用域为当前函数,从定义位置,到其所在的{}的结束位置。生命周期为从程序运行到程序退出,即贯穿整个运行时间,当下次函数调用时,静态局部变量不会被再次初始化,而是沿用上次函数退出时的值。无显式初始化时默认初始化值为0。

有没有单片机(C语言编写的代码)使用的静态分析工具

哈哈,这个问题我可以结合我的项目经验来答一下。

现在一般工业级,汽车级和航空级的产品代码都是需要做静态代码分析的,不知道题主是不是相关领域的码农?我就按汽车电子研发中用到的工具来简单回到一下。

在选工具之前,首先需要明C语言代码静态分析到底分析什么内容。是检查MISRA-C编程规范?需不需要检查内存数组,死区代码,代码逻辑复杂度等等。另外,检查完之后是否需要形成相关的报告等等。

如果你搞的是汽车电子相关的研发项目,仅需要检查MISRA-C相关规则检查,不需要出报告什么的,建议你先看看编译器手册,像green hills,tasking这些[_a***_]级的编译器,一般都自带了静态检查选项的,只要打开相关选项就行。

编译器自带的静态分析功能有一个缺点,就是会极大地影响编译速度,因为它需要大量的时间去做静态规则检查。

如果你不仅需要做MISRA-C规则检查,还需要分析代码逻辑复杂度,运行时bug等等,那么polyspace将是最好的工具。它的运行界面如所示:

polyspace是mathworks家的产品,它们家最出名的产品是mathlab,质量相当有保证。但是也有一个缺点,那就是贵。

QAC也可以做各种MISRA-C规则分析以及其他代码静态分析,可以自动生成分析报告,界面也比较容易上手。

到此,以上就是小编对于c语言静态的问题就介绍到这了,希望介绍关于c语言静态的5点解答对大家有用。

标签: 静态 变量 语言