C++ * a和*&a作为函数的参数时有什么区别?

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/30 19:06:05

C++ * a和*&a作为函数的参数时有什么区别?
C++ * a和*&a作为函数的参数时有什么区别?

C++ * a和*&a作为函数的参数时有什么区别?
如果你说的是函数的形参,那么
void foo(int* ptr);
是传值调用,比如你这么调用
int a;
int* pValue = &a;
foo(pValue);
这样的情况下,pValue的值是不能被函数foo改变的,也就是pValue肯定是指向a的.
但是如果你这么声明
void foo(int*& ptr);
则是传递引用,那么如果你函数里面
void foo(int*& ptr)
{
ptr = NULL;
}
这样调用过之后,pValue就变成了NULL.而第一种情况pValue是不能被改变的.
引用是C++带来的很重要一个特性,他在很多情况下避免了使用指针.而且,在C++里面,引用是不可以捏造的,比如C你可以很容易弄一个NULL的指针,而引用这不存在NULL引用.
上面的foo函数如果要用C来实现,则必须用指针的指针:
void foo(int** pptr)
{
*ptr = NULL;
}
调用的时候要foo(&pValue)
这种技术很多用在比如定义一个安全删除指针的函数,所谓安全就是,只有当指针为零的时候才执行删除,删除之后,立刻把指针赋值为NULL.
template
inline safe_delete(T*& ptr)
{
if (ptr)
{
delete ptr;
ptr = NULL;
}
}
在C++里面,能不用指针都应该尽量避免,STL里面就大量使用引用.

C++ * a和*&a作为函数的参数时有什么区别? 在Excel中,函数可以作为其他函数的A.公式 B.变量 C.参数 D.常量 VB怎么把a函数,作为一个参数,传递给另一个函数 无功补偿柜中间的参数代表什么意思 那A B C 和下面参数 函数的每一个形式参数就是一个 A.表达式 B.常量 C.变量 D.函数调用 可以作为气体状态参数的量是?A内能B功C热量D表压力 如何在MATLAB中实现函数间的参数传递有例子最好function A和function B在一个m文件里,然后需要在这个m文件中实现A中得到的参数交给B,作为B的运算条件,即调用该m文件的结果已经实现了参数的传 写一个函数,实现和角公式:sin(A+B)=sinAcosB+cosAsinB .函数输入2个参数A,B,返回一个参数.写主函数调用此函数,用户输入A,B,输出和角公式结果.C语言中,求正弦余弦的函数在MATH.H中,名字就是SIN() COS() 书中所说是为函数指针,并且将函数指针作为函数参数,请解释一下下面函数的意思#include#include#includeusing namespace std; int f(const void *a,const void *b)char c[3][4]={cab,cap,can};void main() { qsort((void*)c,3, 14.下面的函数调用语句中fun函数的参数个数是 fun(fun(a,a+b,a+c),(a+b+c),25);14.下面的函数调用语句中fun函数的参数个数是fun(fun(a,a+b,a+c),(a+b+c),25);A) 3 B)4 C)5 D)6 求两个矩阵的和在主函数中定义两个矩阵a[4][4]和b[4][4],编写子函数add_matrix(int x[4][4],int[4][4])可以将相加的值放在矩阵x 对应元素中,在主函数中调用add_matrix(a,b),利用数组名作为函数的参数,实 C++:类模板的模板参数___A.只可以作为数据成员的类型 B.只可以作为成员的返回类型C.只可以作为成员函数的参数类型 D.以上三者都可以 已知函数f(x)=x^3-ax^2-bx+c在x=-1时,有极大值7,x=3时有极小值,求a,b,c和函数的极 比如函数A:function funcA(a){alert(a)}; 怎么把函数A作为函数B的一个参数,在B函数内执行呢?函数B怎么定义呢?B:function funcB(var1,var2,函数A){//执行函数A(这个怎么写?)}是指Javascript的代码,最好能举 引用作为函数的参数有什么优缺点 数组是不是不可以作为realloc函数中的指针参数输入吗?例如:void main() { int a[10] 高中数学排列与组合问题(以下问题只答会的就行,最好有步骤)(1)从0、1、2、3这四个数中选三个不同的数作为函数f(x)=ax^2 +bx+c中的参数a b c,可组成不同的一次函数共有----个,不同的二次 函数y=(cosx-a)²+1,当cosx=a时有最小值,当cosx=-1时有最大值,则a的取值范围是( ) A.[ -1,0] B.[ -1,1]C.(-∞,0] D.[0,1]