C/C++:提升_指针的指针和指针的引用

C/C++:提升_指针的指针和指针的引用



◇写在前面

  今天在使用指针的时候我发现了一个自己的错误。

  

  我刚开自以为是觉得输出的两个P都是6,当时觉得两个p所指的地址相同,要修改就都修改了。

  这是一个很低级的错误,两个p所指的地址相同,但是这两个指针的地址是不一样的。

好比两个人都知道火车站怎么走,但不能说这两个人是一个人,更何况在修改中一个人已经忘了火车站,它只知道高铁站怎么走,那另一个只知道火车站的并没有受到影响,他还是只知道火车站。

好了,那么如何做到main修改里面的p呢?要用到两种技术:

  • 指针的指针
  • 指针的引用


◇指针的指针

  

简单说明:

  指针的指针技术中,我们要修改一个指针所指的内容,就要将这个指针本身的地址作为参数传递给方法。

  比如我们要到火车站,只有一个人知道火车站的位置,我们要想找到火车站,就要根据一个地址先找到这个人,再根据这个人找到火车站。

  表示下来就是**p=&(&(p)),&p所指的就是火车站。&(&(p))就是知道火车站的人的地址。

  我们要修改p,就要先找到它,找到后修改火车站的地址,那个人就知道新的火车站地址了。



◇指针的引用

  

简单说明:

  指针的引用,在这里两个指针本质上是一模一样的,change里面的P就是main里面的P。所以直接修改就好。

  个人理解,引用就是指针的一种变体,就是&也可以理解为*.

  

时间: 2024-08-02 11:03:06

C/C++:提升_指针的指针和指针的引用的相关文章

黑马程序员_ C语言基础之指针(三)

概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚,今天的重点有几个方面: 1.什么是指针 2.数组和指针 3.函数指针 什么是指针 存放变量地址的变量我们称之为“指针变量”,简单的说变量p中存储的是变量a的地址,那么p就可以称为是指针变量,或者说p指向a.当我们访问a变量的时候其实是程序先根据a取得a对应的地址,再到这个地址对应的存储空间中拿到a的值,这种方式我们称之为“直接引用”:

指针数组和数组指针的区别

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的长度. 如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组. p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0] p++;       //该语句执行过后,也就是p=p+

指针常量和常量指针

这两个概念经常分不清,今天好好总结一下. 一.指针常量 先说指针常量,是因为它和我们常用的数组有关系. 指针常量的声明 int * const p; 指针声明操作符*在常量限定符const前面,叫做指针常量.忽然发现了一点规律^_^. const限定符修饰的是指针.数组名就是一个指针常量.而数组名和指针有什么区别呢?可以通过引用数组名去修改指向的内存,但是自身不可以被赋值,不可以进行++.–操作. 二.常量指针 常量指针的声明 const int * p1; int const * p2; 常量

指针数组 和数组指针

数组指针和指针数组的区别 数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的长度. 如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组. p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0] p++;       //该语

指针常量和常量指针的一些整理

近来学习指针,碰到一个关于指针常量和常量指针的问题,之前被弄得是稀里糊 涂的,今天特意查资料整理了一下,现拿出来和大家分享,有什么弄错的地方请 大家不吝赐教,共同进步. 首先常量指针,咱们可以这样理解,常量指针即是一个指向常量的指针,既然指 向的是一个常量,那它所指向的值当然就不能变了.但是它本身的值,即它的地 址是可以变的,咱们可以把它指向别的地址. 而指针常量,则可以理解为一个常量,什么时候常量??指针常量,即指针是常 量,则它的地址是不可变的,但是它所指向的地址里的值是可以变的. 一个in

转:C语言指针数组和数组指针

转自网址http://c.biancheng.net/cpp/html/476.html 一.指针数组和数组指针的内存布局 初学者总是分不出指针数组与数组指针的区别.其实很好理解: 指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定.它是“储存指针的数组”的简称. 数组指针:首先它是一个指针,它指向一个数组.在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.它是“指向数组的指针”的简称. 下面到底哪个是数组指针,哪个是指针数组呢: A) int

c指针 --笔记2返回指针值的函数

返回指针值的函数 一般带回指针值的函数,定义形式为: int *a (int x, int y); 看这个经典案例: #include <stdio.h> int main(int argc, char const *argv[]) { double score[][4] = {{60.0, 70.0, 80.5, 20.1}, {60.0, 70.0, 80.5, 21.1}, {60.0, 70.0, 80.5, 22.1}}; double *search(double(*pointer

C/C++笔试篇-------二维指针数组、数组指针的用法

1.废话不多说,先上代码: #include <iostream> using namespace std; int main(void) { int v[2][5] = {{1,2,3,4,5},{6,7,8,9,10}}; int (*a)[5] = v; //指针数组,指针指向数组 a[5],a[5]里面是int数值 该指针等于v的地址 cout<<(*a+1)<<endl; //*a是v[0][0]的地址. 0x22fe04 cout<<(*a+2)

C++指针数组和数组指针

指针相关问题 using namespace std; int main(){ //a) 一个整型数( An integer) int a; //b) 一个指向整型数的指针( A pointer to an integer) int *b; //c) 一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an integer) int **c; //d) 一个有 10 个整型数的数组( An array of 10 integers) int