C++指针变量进行函数调用的问题

2025-02-27 05:27:14
推荐回答(3个)
回答1:

void(*pf)(int,int,int) \\这里定义了一个名字为pf的函数指针!注意是函数指针,请去查一下指针函数的意思吧

pf=sort ; //指针指向sort函数,可以通过pf指针来引用sort函数了(实际上这里是将sort函数的地址 值赋值给了pf,如果不理解这个,说明对指针的理解还不够清楚)

pf(a,b,c) ; //通过pf调用sort函数,这里等价于sort(a,b,c);

viod sort (int x,int y,int z) //这里多了个分号

{
int temp;
if(x{
temp=x; //先将x的值存到temp中 , 将X中的蛋放到地上
x=y; //再将y的值存到x中 将Y中的蛋放到X里
y=temp; //将前边保存的x值存到y中 将地上的蛋放到Y中,实现了两个数的交换,后面的一样
}

}

回答2:

你的理解太有问题了,所以看不懂以下的了。
1.这里我的理解是创建了一个名字为pf的指针函数,且指针函数里的值为整数类型——那是声明了一个叫pf的指针,这个pf指针是指向一个有3个int型形式参数的函数的,这个函数没有返回值。
2.因为 pf=sort, 所以对应函数值也一一对应为 a=x,b=y,c=z了——错了,这是函数定义。定义了一个叫sort的函数,这个sort有3个int型形式参数,这些形式参数不与谁对应,是自身需要的;该函数没有返回值。
3.把输入的值给函数,为a,b,c——这句理解得差不多。它使x=a、y=b、z=c。
4.这里我想问下,X Y的位置可以调换么? temp和X的呢——绝不能互换!你要搞情况谁给谁赋值:是把等号右边的值赋给左边的变量。
5.是将X Y Z中数字的地址调换——没有调换它们的地址,只是调换了它们的值。比如原来x=5,y=1,被调换成x=1,y=5了。
6. 还有pf(a,b,c) 这个指针函数 包括赋值不是没用了么——错。这不是赋值,是通过指针用实际参数a、b、c调用函数sort,就是使sort函数中的形式参数x=a、y=b、z=c并执行sort函数。
7. 函数sort 中的 x y z的值拿来做以上运算也可以达到目的么——排序啊。无论输入的a、b、c的值大小怎样混乱,最后都是从大到小输出。

回答3:

#include
#include
using namespace std;
void sort(int,int,int);
int main()
{
int a, b, c;
cout<<"输入三个数"<cin>>a>>b>>c;
void(*pf)(int,int,int) \\这里我的理解是创建了一个名字为pf的指针函数,且指针函数里的值为整数类型?
pf=sort; //这里是建立一个函数指针pf,给指针赋值
pf(a,b,c) \\把输入的值给函数,为a,b,c?
return 0; //这里a,b,c为函数的参数,都是int类型,就是上面定义的函数指针类型
}
viod sort (int x,int y,int z); \\因为 pf=sort, 所以对应函数值也一一对应为 a=x,b=y,c=z了?
{ //对的
int temp;
if(x{
temp=x;
x=y; \\这里我想问下,X Y的位置可以调换么? temp和X的呢?
y=temp;//这里就相当于交换两个杯子的水要对换需要第三个被子临时来用,先将x放入temp或者先将y换入temp都是可以的,只要在交换过程x,y的值都存在,不被覆盖就行了
}
if(x{
temp=x;
x=z
z=temp
}
fi(y{
temp=y;
y=z;
z=temp
}
cout<" <" <}
额 下半段这个式子我实在有点看不懂了...是将X Y Z中数字的地址调换 从而变换数字所在的位置来达到排序的目的么?
//并不是交换地址,只是将变量的值交换一下
那不用指针对函数 调用, 直接将 函数sort 中的 x y z的值拿来做以上运算也可以达到目的么?
还有pf(a,b,c) 这个指针函数 包括赋值不是没用了么?
麻烦各位大大了 ,谢谢大家帮忙的我会给好心的你追加分的。。谢谢谢谢了。