C++语言程序设计

Define宏语句和inline函数有什么区别?

题目

Define宏语句和inline函数有什么区别?

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

若有以下宏定义:

#define N 2

#define Y(n)((N+1)*n)

则执行语句z=2*(N+Y(5));后的结果是( )。

A.语句有错误

B.z=34

C.z=70

D.z无定值


正确答案:B

本题考查宏定义的功能,可以把它看成一个函数,直接代人参数,可计算出结果为34, 故选B。 

第2题:

#define能作简单的替代,用宏来替代计算多项式5*x*x+5*+5的值的函数f,正确的宏定义语句为( )。

A.#definef(x)5*x*x+5*+5

B.#definef5*x*x+5*x+5

C.#definef(a) (5*a*a+5*a+5)

D.#define5*x*x+5*+5f(x)


正确答案:C
解析:带参数宏的格式:#define标识符(形参表)形参表达式。其功能:在预处理程序中将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。

第3题:

下列有关内联函数的叙述中,正确的是______。

A.内联函数在调用时发生控制转移

B.内联函数必须通过关键字inline 来定义

C.内联函数是通过编译器来实现的

D.内联函数体的最后一条语句必须是rennin 语句


正确答案:A

第4题:

static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?


正确答案:
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

第5题:

设有以下宏定义:#define N 3#define Y(n) ((N+1)*n)则执行以下语句后,z的值为______。z=2 * (N+Y(5+1));

A.出错

B.42

C.48

D.54


正确答案:C

第6题:

下列有关内联函数的叙述中,正确的是( )。

A.内联函数在调用时发生控制转移

B.内联函数必须通过关键字inline来定义

C.内联函数是通过编译器来实现的

D.内联函数函数体的最后一条语句必须是return语句


正确答案:C
解析:此题考查的是内联函数的概念.在调用时,内联函数会像宏函数一样地层开,将调用表达式用内联函数体来替换,所以它没有一般函数的参数压栈和退栈操作,所以选项A) 错误;即使没有使用inline说明,编译器也会将在类的说明部分定义的函数认定为内联函数,所以选项B) 错误:内联函数只是比普通函数有更高的执行效率。对于类型为void的函数,它不需要返回任何函数值,所以在函数体中既可以使用return语句,也可以不使用,选项D) 错误。

第7题:

当需要将一个函数bool isnumber(char c)声明为内联函数时,则此内联函数的函数原型为( )。

A.enum bool isnumber(char c);

B.define bool isnumber(char c);

C.inline bool isnumber(char c);

D.extem bool isnumber(char c);


正确答案:C
解析: 本题考查的是内联函数的相关知识点。函数原型应指出函数名、返回值类型以及在调用函数时知心朋友提供的参数的个数和类型,因为要声明为内联函数,故应加inline关键宇。

第8题:

( 11 )下列有关内联函数的叙述中,正确的是

A )内联函数在调用时发生控制转移

B )内联函数必须通过关键字 inline 来定义

C )内联函数是通过编译器来实现的

D )内联函数函数体的最后一条语句必须是 return 语句


正确答案:C

第9题:

#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为( )。

A.#definef(x)5*x*x+5*x+5

B.#definef5*x*x+5*x+5

C.#definef(a)(5*a*a+5*a+5)

D.#define(5*x*x+5*x+5)f(x)


正确答案:C
解析: 带参数宏的格式为:#define标识符(形参表)形参表达式。其功能:预处理程序将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。

第10题:

以下说法中,正确的是______。

A.#define和printf都是C语句

B.#define是C语句,而printf不是

C.printf是C语句,但#define不是

D.#define和printf都不是C语句


正确答案:C