C++编程:理解指向指针的指针变量

需积分: 17 7 下载量 146 浏览量 更新于2024-08-19 收藏 8.82MB PPT 举报
"指向指针的指针变量-C++-谭浩强" 在C++编程语言中,指针是一个重要的概念,它可以存储变量的内存地址。而"指向指针的指针变量"(也称为二级指针)是这个概念的一个延伸,它是一个指针,其值是另一个指针的地址。在提供的描述中,我们看到如何声明和使用这种类型的变量。 首先,我们有常规的指针声明: ```cpp int i; // 声明一个整型变量i int *p; // 声明一个指向整型变量的指针p p = &i; // 将p初始化为i的地址 ``` 在这里,`p`存储了变量`i`的地址,即`2000H`。然后,我们可以声明一个指向指针的指针变量: ```cpp int **prt; // 声明一个指向指针的指针变量prt,其基类型是指向整型数据的指针 ``` 接下来,我们将`prt`初始化为`p`的地址,即`3000H`: ```cpp prt = &p; ``` 这样,`prt`就指向了`p`,而`p`又指向了`i`。这种结构允许我们通过`prt`间接访问`i`的值。 在C++中,这种多层次的指针可以用于复杂的数据结构,如动态内存分配的多维数组,或者在函数中传递指针本身作为参数。例如,当我们需要修改一个函数内部的指针变量时,可以将指针的地址作为参数传递,而不是指针本身。这样,函数可以通过改变二级指针的值来影响外部的作用域。 此外,C++中的指针还支持解引用操作,对于二级指针,我们需要两次解引用才能访问原始变量的值: ```cpp *(*prt) = 4000; // 修改i的值 ``` 在这个例子中,`*prt`首先得到`p`的值,然后再用`*`操作符获取`p`所指向的值,即`i`。 C++语言的发展历程也值得一提。C++是由Bjarne Stroustrup在C语言的基础上发展起来的,旨在提供面向对象编程的功能,同时保留C语言的效率和灵活性。C++增加了类、模板、异常处理等特性,使得它成为一种强大的系统级和应用级编程语言。 C语言的特点包括结构化编程、丰富的运算符(包括位运算)、良好的可移植性和相对宽松的语法。虽然这使得C语言在编写程序时具有很大的自由度,但也意味着调试可能会更复杂,尤其是对初学者而言。 "指向指针的指针变量"是C++中用于处理复杂数据结构和间接访问内存的一种机制,它是理解C++内存管理和指针操作的关键概念。通过学习和熟练掌握这一概念,程序员能够编写更高效、更灵活的代码。