c++定义函数参数(int * & p)怎么理解,是什么意思

如题所述

参数类型为int *型 同时是引用传值
即类型是int * p
由于是引用传值,所以对该参数不会新分配空间 而是直接用实参的空间
这样在函数中对p的任何修改 实参本身也会同步修改

举例来说
对于
void func(int *&p)
{
p = NULL;

}

调用的时候
int main()
{
int * i = 0x1234;

func(i);

}

这样在调用后 i值为NULL追问

可以写成int & * p吗,顺便问一下delete []arr可以写成delete arr[]或delete arr吗(arr是数组)

追答

不可以 &是用来修饰变量p的 而不是修饰*p
所以必须写成int * &p

对于delete 如果是new type[cnt]形式来开辟的空间 那么必须用delete[] 来释放
delete arr[] 这个是错误的写法
而delete arr 只适用于arr = new type方式申请的空间
二者不要用混了

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-08-13
nt *&p是指针的引用,不会为p开辟空间。int *p开辟了个临时指针,得到地址。两者效果是一样。
第2个回答  2014-08-13
你就把它理解成: 参数是 int **类型, 在函数内对p赋值, 实际上的效果对 *(int**)赋值.
所以函数返回后, 对p的赋值能带回到调用函数中去.
第3个回答  2014-08-13
可以理解为指向指针的指针变量,
如果这样写 你应该好理解:
int a[5][20];
int *p[5] = a;
第4个回答  2014-08-13
定义了一个指针变量,这个变量保存的是p的地址

c++定义函数参数(int * & p)怎么理解,是什么意思
参数类型为int *型 同时是引用传值 即类型是int * p 由于是引用传值,所以对该参数不会新分配空间 而是直接用实参的空间 这样在函数中对p的任何修改 实参本身也会同步修改 举例来说 对于 void func(int *&p){ p = NULL;} 调用的时候 int main(){ int * i = 0x1234;func(i);} 这样在...

c++的int **p;我一直搞不懂,它是&p的意思吗?如果是,干嘛不写&p,要发 ...
它是指向地址的地址,意思p指向的地址A, A又指向地址B .不是&p的意思。你可以看看C 里面二级指针的相关知识

c++中int*&p和int&*p的区别
1、int *&p:int *&p可以直接访问得到指针指向的数值。2、int &*p:int &*p无法访问得到表示引用的存储的数值。

C++中的"(int *)"是什么意思
(int *)是将name转换为指向int型变量的指针,所以再用cout 输出,结果就是该名字字符串的首字符的地址。

C++中int* p;
4、int *p:表示p是一个指针变量,它的值是某个整型变量的地址。或者说p指向一个整型变量。至于p究竟指向哪一个整型变量,应由向p赋予的地址来决定。5、再如:int *s是指向整型变量的指针变量,float *d是指向浮点变量的指针变量.,char *g;是指向字符变量的指针变量。

C++中,int *& 与 int &* 的区别、意义及使用
int &*a 可以解释为,int类型引用 的指针(C++不允许声明 指向引用的指针)。const 是限定符 const int a; \/\/const 限定 int,即 a 是一个变量,类型为int的常量。(所以,int常量不可修改,所以a也不可修改)int const a; \/\/ const 限定 a,即 a 是一个常量,类型为int。const int *a;...

C++中,int&&表示什么意思?和int&有什么不同?
引用是C++的特殊变量类型,它是已有变量的别名。主调函数调用func把实参传给p时,实际上是给实参起了个别名p,所以在函数中对p的操作就是对主调函数中的对应实参的操作,将会使实参发生永久性改变。而func中的第二个形参int q是普通的int类型,调用时只是将实参的“值”拷贝给q,所以在函数中对q的...

C++里把int&作为函数参数是什么意思?
引用也可以作为形参,情况和一般的形参有所不同。这是因为,形参的初始化不是在类型说明时进行,而是在执行主调函数的调用表达式时,才为形参分配内存空间,同时用实参来初始化形参。这样引用类型的形参就通过形实结合,成为实参的一个别名,对形参的任何操作也就会直接作用于实参。

*&p表示什么意思?
int p=a;这种情况,p与a是不同的变量,这里是将a的值赋给p int &p=a;即 p是a 的别名,p和a其实是同一个整形变量,两个占用同一块内存空间,如果有 p=15;那么a也是15,修改p与修改a是完全等价的 那么 int *a;int * &p=a;很容易理解,把 int * 看成一个类型,a就是一个整型指针...

C++中函数形参为“类型 *&变量名”什么意思?
void freePtr2(int*& p2){ \/\/未释放内存前 -> p2 Address : 0012FEC8 p2 value : 003429B8,p2是一个指针的引用,即引用指向指针,记住引用的特点:对引用的对象直接操作。所以它的地址和值与栈外的main()函数中,p2的值是同一个。delete p2; \/\/对p2所引用的指针进行释放内存,即:系统...

相似回答