c++指针和引用之高难度(二)习题讲解

1.【单选题】

int a4 { 1001,1002,1003,1004 };

int* p{ &a1 };

p1 = ?

A 1001 B 1002 C 1003

解析:这道题考察了指针和数组可以混用。p 指向了 数组 a0 的地址,也就是 1002 的地址,此时 *p = p0,p0 等于 1002 ,p1 就等于 1003,选C。

2.【单选题】

int a = 5;

int b = 6;

int& la = a;

la = b;

la++;

b = ?

A 5 B 6 C 7

解析:这道题 la 是 a 的引用。la = b,是将 a 赋值于 b ,等效于 a = b ,la ++ 对 b 的值没有影响,此时 b 依然等于 6,选B。

3.【单选题】

int* a = (int*) malloc( 4 * sizeof ( int ) );

a1 = 9;

*a = ?

A 不确定 B 0 C 9

解析:a 分配了 4 个 int 类型的空间,a1 = 9 , *a 就等于 a0 的值,此时并不确定a0等于多少,所以选A。

4.【单选题】

int* a = ( int* )malloc( 4 * sizeof( int ) );

a0 = -1;

char* b = ( char* ) &a0;

b++;

memset(b, 0, 3);

a0 = ?

A -1 B 0 C 255

解析:这道题需要用图片解释,其中 a 0 = -1 ,也就是 0xFFFFFFFF。如图所示:

b++后,如图所示:

memset(b, 0, 3) 后,如图所示:

又因为内存排序方式为从低位到高位,所以 a0 等于 0x000000FF 等于255,所以选C。

5.【单选题】

int* a = ( int* )malloc( 4 * sizeof( int ) );

memset( a, 65535 , 4 );

a0 = ?

A -1 B 65535 C 255

解析:65535 等于 2的16次方 - 1,也就是 0xFFFF。memset( a, 65535 , 4 ),在 a 的前 4 个字节 赋值 0xFFFF ,但是 每个字节只能赋值0xFF ,所以 a0等于 0xFFFFFFFF,也就是 - 1。

6.【单选题】

int a* = calloc(1, 4);

a = realloc( a,100 );

A a的内存地址可能发生变化

B a的内存地址一定发生变化

C a的内存地址一定不发生变化

解析:这道题选A。a重新分配内存空间后,内存地址可能发生变化。

7.【单选题】

int a\[\] { 1001,1002,1003,1004 };

int *b = new int 4;

memcpy( b, &a2 , 10);

b1 = ?

A 1004 B 1002 C 1003

解析:memcpy 拷贝 a 的地址,从 1003 的地址开始拷贝 ,拷贝 10 个字节,此时b0 = 1003 ,b1 = 1004,选A。

8.【单选题】

int a 22

{

{ 1, 2 },

{ 3, 4 }

}

int* b = (int*) a;

b3 = ?

A 2 B 3 C 4

解析:a的地址赋值给了b,此时 b0 = 1, b1 = 2, b2 = 3, b3 = 4,选C。

9.【单选题】

下面说法正确的是:

int a = 5;

int& la = a;

int* b = &la;

A b中存放的是la的内存地址

B b中存放的是a的内存地址,因此la本身并不占用内存

C b中存放的是a的内存地址

解析:这道题答案选C。la是a的引用,引用是阉割版的指针,它占用内存空间。

10.【单选题】

下面说法正确的是:

int *a = new int;

A 释放a的内存可以使用 delete

B 释放a的内存应该使用delete

C 释放a的内存应该使用free(a);

解析:选项A:正确,new 对应delete,选项B:错误,如果a是个数组可以选,选项C:可以用,但是不推荐使用。

相关推荐
码匠许师傅3 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
2603_965148113 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
小小龙学IT5 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
知无不研6 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
cfm_29146 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
C++ 老炮儿的技术栈8 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qq_448011168 小时前
C语言中的柔性数组
c语言·开发语言·柔性数组
小白学大数据8 小时前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
zlinear数据采集卡8 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
Poo_Chai9 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库