C++程序设计解析:谭浩强课件中的指针与数组示例

需积分: 12 8 下载量 159 浏览量 更新于2024-08-23 收藏 8.72MB PPT 举报
"假设有说明-C++谭浩强课件" 这篇内容涉及到的是C++编程中的指针和数组的使用,以及C++语言的一些基本特点。首先,我们来看提供的代码示例: ```cpp char *argv[] = {"hello", "nanjing", "jiangsu"}; char **pargv = argv; cout << *(pargv + 1) << endl; cout << (char)(**pargv + 1) << endl; cout << *(*pargv + 1) << endl; cout << *(*(pargv + 2) + 4) << endl; ``` 这段代码中,`argv` 是一个字符指针数组,它包含了三个字符串字面量的指针。`pargv` 是一个指向 `argv` 的二级指针,即 `char **` 类型。 1. 第一行输出 `*(pargv + 1)`,这里 `(pargv + 1)` 表示指针 `pargv` 向前移动一位,指向 `argv` 数组的第二个元素,即 `"nanjing"` 的首地址。因此,`*(pargv + 1)` 输出的是 `"nanjing"`。 2. 第二行 `(char)(**pargv + 1)`,首先 `**pargv` 解引用两次,得到 `argv[0]` 即 `"hello"` 字符串的第一个字符 `'h'`。然后 `(char)` 强制类型转换用于处理整型溢出,`(**pargv + 1)` 表示 `'h'` 后面的字符 `'e'`。这里 `(char)` 作用不大,因为字符本身就是一个字节大小。 3. 第三行 `*(*pargv + 1)`,类似第二行,但直接解引用 `pargv`,得到第一个字符串的首字符 `'h'`,然后加一得到 `'e'`。 4. 第四行 `*(*(pargv + 2) + 4)`,先将 `pargv` 移动到第三个元素 `"jiangsu"`,然后加四,指向 `'g'`,最后解引用输出 `'g'`。 接下来,我们回顾一下C++语言的主要特点: 1. 结构化编程:C++支持结构化编程,它强调程序的模块化和分层设计,使得代码更易于理解和维护。 2. 高级语言与汇编语言的结合:C++具有丰富的运算符,包括算术、逻辑和位运算,同时允许直接访问硬件,提供了高效的编程能力。 3. 可移植性:C++编写的程序可以轻松地在不同的硬件和操作系统上运行,只需少量或无需修改。 4. 语法灵活性:C++的语法相对较松散,允许程序员有很大的设计自由度,但也增加了学习和调试的难度。 5. 强大的数据结构:C++支持多种数据结构,如数组、结构体、类等,使得程序可以处理复杂的数据组织形式。 6. 调试挑战:对于初学者来说,C++的调试可能较为困难,因为编译器可能不会捕获所有运行时错误,需要程序员有较强的逻辑分析能力。 7. 高效性:由于C++编译后的目标代码接近机器码,所以程序运行效率高,适合编写性能要求严格的系统级和控制程序。 这段内容展示了C++中的指针操作和C++语言的基本特性,对于学习C++的初学者来说,理解这些概念至关重要。