欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > c++函数(一)习题讲解

c++函数(一)习题讲解

2025/5/10 4:10:31 来源:https://blog.csdn.net/m0_62681656/article/details/140027462  浏览:    关键词:c++函数(一)习题讲解

1.【单选题】

void swap (int a,int b)

{

        a = a ^ b;

        b = a ^ b;

        a = a ^ b;

}

int a {120},b {130};

swap{a,b};

a=? b=?

A 120,130         B 130,120         C130,0

解析:这道题中,函数体的内容是交换两个变量的值,采用的是位运算的方法,但因为传递的参数是值传递,所以并不能改变实参的值,所以选A。

2.【单选题】

void Add (int* a,int * b)

{

        a = b;

}

int a = 250,b = 350;

int* pa = &a;

Add ( pa, &b);

Pa[0] = ?

A 350         B 250         C 0

解 析:这道题比较难,很多人会选择A,但是这是的错误的选项,正确答案是B。函数体内部指针 a 等于指针 b,但是 a 仍然是一个局部变量,和它传入的指针 pa 并没有什么关系,仍然是值传递,无法改变变量的值。 

3.【单选题】

void Add (int* &a, int *b)

{

        a = b;

}

int a = 250, b = 350;

int* pa = &a;

Add ( pa, &b);

Pa [0] = ?

A 350         B 250         C 0

解析:这道题和上道题一样,只不过这次函数的形参为变为了 指针的引用,这个时候指针形参 a 就相当于 pa 的别名,a 可以改变 pa 的值,所以这道题选A。 

4.【单选题】

void Add(int& a)

{

        a++;

}

int a = 250;

Add(a);

说法正确的是:

A 最后 a = 251        B 最后 a = 250         C 程序不能运行

解析:这道题就比较简单了,Add 函数使用了一个引用参数 int& a,它允许函数直接访问和修改传入的变量的值,所以选A。

5.【单选题】

int main ( int argcount, char* c_ arg[])

{

        std::cout << argcount << std::endl;

        // 此时屏幕显示2

        int a = (int) c_arg[argcount];

        a = ?

}

A.0         B.无法确定         C.1

解析:这道题考察main函数参数的知识,这里我有专门的知识详解,具体参考我之前写的文章c++中main(int argc, char* argv[])参数详解,argcount 为 2,说明有 c_ arg数组有两个字符串,一个是运行文件名,另一个不确定,但是要求第三个元素,答案是0。

6.【单选题】

typedef int (*pAdd)(int,int);

pAdd p;

p可以指向下面哪个函数?

A void Add( int a, int b);

B int Add ( int a, int b);

C int Add( float a,f loat b);

解析:这道题用 typedef 定义了一个函数指针。很明显返回值类型和参数都为 int 类型,答案选B。

7.【单选题】

typedef int (*pAdd)(int, int);

int Add(int a, int b)

{

        return a  + b;

}

std::cout << Add;

屏幕显示50000

pAdd x = (pAdd)0x50000;

int c = x(100,200);

c = ?

A.100         B.200         C.300

解析:这道题答案是C,很简单。但是这道题的来意是弄明白函数的本质是什么,函数的本质就是内存,编译好后就把我们的代码翻译成为了二进制代码,这里 0x50000 就表示函数的首地址,然后通过(pAdd)类型转换为 x 函数。

8.【单选题】

int* Add()

{

        int* x = new int [100];

        return x;

}

以下说法正确的是:

A 这种写法是错误的,x是一个局部变量指针,返回可能会出错

B 这种写法是正确的

C 这种写法是错误的,应该return &x;

解析:这道题选B。Add 函数返回的是一个指针地址,这里 x 虽然是一个局部变量,但是 new 动态申请的内存地址并不会消失,return x 返回的仅仅是 x 的值,所以这种写法可以。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词