有关C++函数调用问题。不明白里面的指针和&的用法。

2025-04-09 00:48:09
推荐回答(2个)
回答1:

C++调用函数的时候就是转向函数的入口地址,而函数指针就是保存的函数的入口地址所以你使用发fp(a,b)调用就相当于函数名调用你使用(*fp)(a,b)调用相当于把a,b作为参数,传递到fp指向的地址所以效果是一样的其实函数调用的时候使用函数名 f_i(a,b) 和 (*f_i)(a,b) 也能得到正确的结果道理也是一样的最后有一个问题就是不知道是否和编译器,可能不同的编译器会有不同的处理,我用的g++,没有问题。建议最好直接使用指针名调用 fp(a,b)希望对你有帮助。

回答2:

&符号在c++中有多个意义。估计你是将引用符号和取地址操作符弄混了。

举个栗子:

char ch = ‘A’;
char * pch = &ch;    //这里的&就是取地址操作符,用来获取变量ch的地址
char & refch = A;    //这里的&是引用类型的标识。

再看函数调用

从经典的swap函数来看

int swap(int , int);    //这个基本没什么卵用,达不到目的
int swap(int *, int *);    //这个就是地址传递,会修改实参所指向地址的值
int swap(int &, int &);    //这个是引用传递,调用的时候最直观,修改实参的值

上边三个函数,如果第一个和第三个同时存在,调用的时候是会报错的。