欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++ 自我对指针使用中的一些理解总结

程序员文章站 2024-03-07 20:32:03
...

以下举例类型为整型int,对于其他基础变量类型也同样适用。

C++ int* 传参数含义两种理解:

1、传入一个int整型变量的地址,修改此变量的值,可传出修改后的值;

2、传入一维数组;

  • 如果传入参数前对int*参数赋值为null,那么在函数内对此参数的任何修改都无法传出去。
  • 如果传入参数前已经对int*参数进行初始化内存,比如:int* boxes = int[10]; 那么传入的就是一维数组的首地址;在函数内对一维数组内的值进行修改,就可以传出修改后的值。

C++ int** 传参数含义两种理解:

1、传入一维数组的地址,不用初始化内存,可在函数内对参数进行修改并传出修改后的值;

比如对函数:

void init(int ** boxes);

调用时:

int* boxes = null;

Init(&boxes); // 此时就是将int**参数当成一维数组来处理,在函数内对boxes进行一维数组处理赋值即可,传出修改的参数值。

2、传入二维数组;

  • 如果传入参数前int**参数赋值为null,那么在函数内对此参数的任何修改都无法传出去;因为没有传入内存地址,而在函数内修改的内存地址不是int**参数的地址。
  • 如果传入参数前对int**先进行初始化(或者只对int**的第一维初始化,建议这样做),然后在函数内才可以对参数进行修改(包括对int**的第二维进行初始化修改)并传出修改后的值。因为传入的是初始化后的数组首地址。