C++程序设计解析:谭浩强版指针与数组详解

需积分: 9 4 下载量 26 浏览量 更新于2024-08-19 收藏 8.66MB PPT 举报
"《假设有说明-c++程序设计谭浩强完整版》是关于C++程序设计的一本书,由谭浩强编著,主要讲解C++语言的基本概念、特点和应用。书中通过实例介绍了C++的结构化特性、丰富的运算符、数据结构以及程序的可移植性等核心知识点。此外,书中的示例还涉及了指针的使用,如通过指针操作字符串数组。" 在C++程序设计中,指针是一个重要的概念,它允许我们直接访问内存地址。在给定的描述中,涉及到一个例子,展示了如何使用指针操作字符串数组: ```cpp char *argv[] = {"hello", "nanjing", "jiangsu"}; char **pargv = argv; ``` 这里,`argv` 是一个字符指针数组,包含了三个字符串的首地址,而 `pargv` 是指向 `argv` 数组的指针,因此 `pargv` 指向的是 `argv` 的第一个元素,即 "hello" 字符串的首地址。 接下来,我们分析给出的四个输出语句: 1. `cout << *(pargv + 1) << endl;` 这个语句首先将 `pargv` 向后移动一位,指向 "nanjing" 字符串的首地址,然后解引用,输出整个字符串 "nanjing"。 2. `cout << (char)(**pargv + 1) << endl;` 这里首先通过两次解引用获取到 "hello" 字符串的第一个字符 'h',然后将其转换为 `char` 类型并加 1,得到 'i',最后输出 'i'。 3. `cout << *(*pargv + 1) << endl;` 这个语句与第二条语句类似,但是直接对指针 `*pargv` 加 1,所以它跳过 "hello" 的第一个字符 'h',指向 'e',并输出 'e'。 4. `cout << *(*(pargv + 2) + 4) << endl;` 首先,`*(pargv + 2)` 移动到 "jiangsu" 的首地址,然后加上 4,指向 "g",最后解引用输出 'g'。 这个例子展示了C++中指针的算术操作和解引用,以及如何通过指针访问和操作字符串。在C++编程中,理解和熟练掌握指针的使用至关重要,因为它允许高效地处理内存和数据结构,特别是在处理数组和动态内存分配时。同时,理解指针和数组的关系也有助于编写更复杂的程序,如函数参数传递、链表和树等数据结构的实现。