Visual C++第4版习题答案详解:指针与引用实战

需积分: 9 10 下载量 143 浏览量 更新于2024-07-22 收藏 154KB DOC 举报
本资源是一份针对Visual C++编程语言的实用教程第四版,作者是郑阿奇。该教程提供了一组详尽的习题及其参考答案,旨在帮助读者深入理解和掌握C++语言中的关键概念。以下是部分习题及解答,涵盖了指针、引用、数组、动态内存分配以及函数参数传递等核心知识点: 1. **指针和引用**: - 题目要求计算表达式 `*pd * b`、`++(*pd) - b`、`*pd++` 和 `++(*pd)` 的值。其中 `pd` 是 `d` 的地址,`b` 是一个整数。根据C++运算规则,这些表达式分别计算为:`5 * 3 = 15`、`(5+1) - 3 = 3`、`5`(因为先自增再取值)和`6`(先自增`*pd`为6,然后取值)。答案依次是15, 3, 5, 6。 2. **数组和指针声明**: - (1) 选择正确的数组声明是 `intN[4,9]`,因为它允许二维数组的创建。 - (2) `*p` 表示 `p` 指向的 `a` 变量的值,因此它的值是变量 `a` 的值,即 `100`。 - (3) 程序输出 `*(p++)` 会先取 `a[0]`(2),然后 `p` 自增到 `a[1]`(4),输出 2,`**q` 直接取 `p` 指向的元素,即 `a[0]`,输出 2。答案是 B(2,2)。 - (4) 计算 `x` 的值时,先取 `a[0][0]`(1),然后加2得到 `a[0][2]`(3),再次加4得到 `a[0][4]`(7),所以 `x` 为 15。 3. **引用与数组操作**: - (5) 对于动态分配的二维数组 `int(*q)[3]`,引用 `*(*q+2)` 指向的是 `q` 指向的二维数组的第三个元素,因为索引从0开始。 - (6) 动态分配单个 `float` 类型的内存,用 `new float`,在声明指针时应明确类型,即 `float *p;`。 - (7) 正确的引用声明是 `int&x=m`,因为引用必须初始化为某个变量。 4. **函数与指针应用**: - (57) 函数 `fun` 返回数组 `s` 中的元素引用,调用 `fun(3,s)=10` 实际上修改了 `s[3]` 的值,所以 `fun(3,s)` 输出 10。 - (58) 设计一个交换两个整数的函数,可以使用指针间接访问参数值,如:`void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; }` - (59) 编写函数 `fun` 接收数组地址、数组长度和一个整数,用于交换指定位置的元素,具体实现依赖于实际需求。 通过解答这些习题,读者将加深对C++中指针、引用、数组操作、动态内存管理以及函数参数传递的理解,有助于提高编程技能。