更多“C语言中一般全局变量与静态全局变量生存期不同”相关问题
  • 第1题:

    函数的形参是()

    A、全局变量

    B、局部变量

    C、静态变量

    D、部变量


    参考答案:B

  • 第2题:

    以下说法错误的是:()

    A.全局变量就是在函数外定义的变量,因此又叫做外部变量

    B.一个函数中既可以使用本函数中的局部变量,也可以使用全局变量

    C.局部变量的定义和全局变量的定义的含义不同

    D.如果在同一个源文件中,全局变量和局部变量同名,则在局部变量的作用范围内,全局变量通常不起作用


    正确答案:A

  • 第3题:

    在不同文件的函数中,对非静态全局变量的引用要加的关键字是( )。

    A.auto

    B.register

    C.extern

    D.static


    正确答案:C
    解析:对外部变量进行说明时,用extern标识。

  • 第4题:

    若程序中定义了局部变量与全局变量,则(11)。A.在函数内只能访问局部变量,而不能访问全局变量SX

    若程序中定义了局部变量与全局变量,则(11)。

    A.在函数内只能访问局部变量,而不能访问全局变量

    B.局部变量与全局变量的名字不得相同

    C.若一个函数被多次调用,则其定义的局部变量必定分配同一个存储单元

    D.函数中定义的局部变量与全局变量同名时,在函数内引用的是局部变量


    正确答案:D
    本题考查程序语言的基本概念。在高级语言程序中,变量的作用域(引用变量的代码范围)可能是全局的或者是局部的。对于全局变量,其作用域是整个程序(或文件),因此在函数内可以访问全局变量,而局部变量的作用域为声明(定义)该变量的函数(过程,子程序)。一般语言都规定,若全局变量和局部变量的名称相同,则在局部变量的作用域范围内,引用的是局部变量(即最近嵌套原则)。程序运行过程中,每次调用一个函数时,都在栈区为该函数的运行创建活动记录(主要包括函数运行时需要的数据和控制信息),函数运行结束后则释放为其分配的活动记录。因此,函数多次运行时,其定义的局部变量不一定分配同一个存储单元。

  • 第5题:

    试说明使用静态成员的目的?静态成员跟全局变量相比有哪些优点?


    正确答案:使用静态成员的目的:实现数据共享。
    静态成员相较于全局变量的优点:
    1)静态成员名称的作用域只限定于定义它的类中,因此避免了与具有相同名称的其他类的成员或者相同名称的全局变量发生命名上的冲突。
    2)定义静态成员保证了类的封装性。因为静态成员可以被定义成类的私有成员而全局变量却不能。
    3)静态成员必然是跟程序中特定的类相关联的,这将有利于程序编写者说明定义这个成员的意图,而在外部定义的全局变量有时是晦涩难懂的。

  • 第6题:

    关于全局变量,下列哪种说法是错误的?()

    • A、全局变量是用于在不同的程序之间传递数据。
    • B、它只有前面板,没有程序框图。
    • C、全局变量是一个特殊的VI,可以使用公式节点进行编程。
    • D、全局变量通过接口实现主程序和子程序之间的数据传递。

    正确答案:C

  • 第7题:

    在程序中的不同过程之间,不能通过()进行数据传递。 ①全局变量 ②窗体或模块级变量 ③形参与实参结合 ④静态变量

    • A、④
    • B、①②③
    • C、②④
    • D、①②④

    正确答案:A

  • 第8题:

    在PowerScript语言中,从程序质量角度看应按()优先顺序定义变量。

    • A、局部变量、实例变量、共享变量、全局变量
    • B、局部变量、共享变量、实例变量、全局变量
    • C、共享变量、局部变量、实例变量、全局变量
    • D、局部变量、实例变量、全局变量、共享变量

    正确答案:A

  • 第9题:

    全局变量会增加不同函数之间的隐式耦合度,从而降低代码可读性,因此应尽量避免过多使用全局变量。


    正确答案:正确

  • 第10题:

    单选题
    程序中的不同过程之间,不能通过()进行数据传递。 ①全局变量 ②窗体或模块级变量 ③形参与实参结合 ④静态变量
    A

    ②④

    B

    C

    ①②④

    D

    ①②③


    正确答案: C
    解析: 暂无解析

  • 第11题:

    单选题
    在PowerScript语言中,从程序质量角度看应按()优先顺序定义变量。
    A

    局部变量、实例变量、共享变量、全局变量

    B

    局部变量、共享变量、实例变量、全局变量

    C

    共享变量、局部变量、实例变量、全局变量

    D

    局部变量、实例变量、全局变量、共享变量


    正确答案: C
    解析: 暂无解析

  • 第12题:

    问答题
    试说明使用静态成员的目的?静态成员跟全局变量相比有哪些优点?

    正确答案: 使用静态成员的目的:实现数据共享。
    静态成员相较于全局变量的优点:
    1)静态成员名称的作用域只限定于定义它的类中,因此避免了与具有相同名称的其他类的成员或者相同名称的全局变量发生命名上的冲突。
    2)定义静态成员保证了类的封装性。因为静态成员可以被定义成类的私有成员而全局变量却不能。
    3)静态成员必然是跟程序中特定的类相关联的,这将有利于程序编写者说明定义这个成员的意图,而在外部定义的全局变量有时是晦涩难懂的。
    解析: 暂无解析

  • 第13题:

    默认形参值不可以是()。

    A.静态全局变量

    B.局部变量

    C.函数调用

    D.全局变量


    正确答案B

  • 第14题:

    一种语言中不同种类的变量往往采用不同的存储分配策略,C语言中的全局变量和静态变量采用静态分配,而自动(Auto)类变量采用(30)。

    A.最佳分配

    B.首先分配

    C.堆式分配

    D.栈式分配


    正确答案:D
    解析:在目标程序运行时,目标代码所引用的数据对象在内存空间中。因此,在编译阶段产生目标时,要把目标代码所引用的数据对象映射到内存空间上,在运行时,再分配给需要的内存单元,这个过程称为存储分配。分配的对象有简单数据类型(如整、实和布尔型等)、结构数据类型(如数组和记录等)和连接数据(如返回地址、参数等)。由于各种语言的语义不同,主要是名字的作用域和生存期不同,因而对存储空间的组织和采用的存储分配策略也不同,可分为静态和动态两大类。把过程或函数的一次执行叫一个活动,把一个活动所需要的存储空间组织在一起构成一个活动记录(有的书上称数据区),不同语言的活动记录结构是不同的。如果在编译时能确定目标程序运行中所需的全部数据空间的大小及相互位置,那么,能在编译时安排好目标程序运行时全部数据对象在存储空间中的位置,且不随目标程序的运行而改变,则称这种分配为静态存储分配,如先于FORTRAN77版本的FORTRAN语言采用这种分配策略。如果一个程序语言允许递归过程、可变数组或动态数据结构,那么,就需采用动态存储分配策略,它有两种方式:栈式和堆式。栈式动态存储分配策略适用于组织PASCAL、C、ALGOL之类的语言的活动记录。每当调用一个过程产生一个活动时,它所需的活动记录就分配在栈顶。每当过程的一个活动结束时,就释放栈顶的活动记录。如果一个程序语言提供用户构造动态数据结构的设施,有自由地申请数据空间和退还数据空间的机制(如C++中的newdelete,PASCAL的new),或者不仅有过程而且有进程的程序结构,即空间的使用未必服从“先申请后释放,后申请先释放”的原则,那么栈式的动态存储分配方案就不适用了,这种情况下通常使用一种称为堆式的动态存储分配方案。下图所示为C语言运行时的内存空间安排,编译程序通常把全局量和每个函数中的静态量分在静态数据区,把一个函数中的自动变量和必需的数据组织成活动记录,随着调用函数的展开,分配在栈中。对于程序员构造动态数据结构,调用malloc动态申请的单元,则分配在堆中。

  • 第15题:

    以下叙述中正确的是

    A.全局变量的作用域一定比局部变量的作用域范围大

    B.静态(stati c) 类型变量的生存期贯穿于整个程序的运行期间

    C.函数的形参都属于全局变量

    D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值


    正确答案:B
    解析:若在函数中定义与全局变量名字相同局部变量,则全局变量在该函数中将不起作用,因此全局变量的作用域并不一定比局部变量的作用域大;静态变量一旦定义,将在整个程序的运行期间都存在;函数的形参只在函数调用的时候分配存储空间,在退出函数时收回存储空间,因此是局部的;没有赋值的auto型变量的初值是随机的,没有赋值的static型变量的初值是0。

  • 第16题:

    在高级语言中为了避免副作用,在子程序中应该尽可能使用全局变量。()


    答案:×

  • 第17题:

    当局部变量与全局变量同名时,若要在局部块内访问全局变量,使用()运算符。

    • A、::
    • B、:
    • C、.
    • D、->

    正确答案:A

  • 第18题:

    过程级变量属于()

    • A、全局变量
    • B、静态变量
    • C、局部变量
    • D、变体变量

    正确答案:C

  • 第19题:

    如何在汇编语言程序访问C语言的全局变量?


    正确答案: 汇编程序可以通过地址间接访问在C语言程序中声明的全局变量。通过使用IMPORT关键词引人全局变量,并利用LDR和STR指令根据全局变量的地址可以访问它们。
    对于不同类型的变量,需要采用不同选项的LDR和STR指令,如下所示:
    1)unsignedchar——LDRB/STRB;
    2)unsignedshort——LDRH/STRH;
    3)unsignedint——LDR/STR;
    4)char——LDRSB/STRSB;
    5)Short——LDRSH/STRSH

  • 第20题:

    C程序中所有的全局变量都是静态存储的。()


    正确答案:正确

  • 第21题:

    程序中的不同过程之间,能通过()进行数据传递。 ①全局变量 ②窗体或模块级变量 ③形参和实参结合 ④静态变量

    • A、①②④
    • B、①②③
    • C、②④
    • D、④

    正确答案:B

  • 第22题:

    单选题
    以下针对全局变量的叙述错误的是(  )。
    A

    全局变量的作用域是从定义位置开始至源文件结束

    B

    全局变量是在函数外部任意位置上定义的变量

    C

    用extern说明符可以限制全局变量的作用域

    D

    全局变量的生存期贯穿于整个程序的运行期间


    正确答案: A
    解析:
    在不同编译单位内用extern说明符来扩展全局变量的作用域,extern可以将全局变量作用域扩展到其他文件,而不是限制全局变量的作用域。答案选择C选项。

  • 第23题:

    问答题
    如何在汇编语言程序访问C语言的全局变量?

    正确答案: 汇编程序可以通过地址间接访问在C语言程序中声明的全局变量。通过使用IMPORT关键词引人全局变量,并利用LDR和STR指令根据全局变量的地址可以访问它们。
    对于不同类型的变量,需要采用不同选项的LDR和STR指令,如下所示:
    1)unsignedchar——LDRB/STRB;
    2)unsignedshort——LDRH/STRH;
    3)unsignedint——LDR/STR;
    4)char——LDRSB/STRSB;
    5)Short——LDRSH/STRSH
    解析: 暂无解析

  • 第24题:

    单选题
    在程序中的不同过程之间,不能通过()进行数据传递。 ①全局变量 ②窗体或模块级变量 ③形参与实参结合 ④静态变量
    A

    B

    ①②③

    C

    ②④

    D

    ①②④


    正确答案: D
    解析: 暂无解析