怎样将指针传给函数?

怎样将指针传给函数?,第1张

1)用指针作为函数的参数,它的作用是将一个变量的地址传送到另一个函数中。

#include<stdioh>

void change(int a,int b) / 定义一个函数, 两个指针为函数的形参/

{

int temp;

temp=a; /函数的作用是 交换两个变量/

a=b;

b=temp

}

void main()

{

int c,d;

int e,f; /定义两个实参/

scanf("%d %d",&c,%d);

e=&c;

f=&d; /分别将c、d的地址赋给e、f/

if(c>d) change(e,f);

printf("%d %d\n",c,d);

}

2)指针也可以指向函数

有2种解决方法,第一种是把MyFun(int x) 定义为static (适用于MyFun不需要实例的情况)

#include <iostream>

using namespace  std;

class CStream

{

public:

static void MyFun(int x);

protected:

private:

};

void CStream::MyFun(int x)

{

cout << x << endl;

}

void(FunP)(int);   //定义函数指针

int main(int argc, char argv[])

{

CStream m_st;

FunP = m_st->MyFun; //把函数名赋给函数指针变量 

(FunP)(20);

(FunP)(30);

}

第二种方法是用pointer to member function (适用于MyFun() 需要实例的情况)

#include <iostream>

using namespace  std;

class CStream

{

public:

void MyFun(int x);

protected:

private:

};

void CStream::MyFun(int x)

{

cout << x << endl;

}

void (CStream::FunP) (int);   //定义函数指针

int main(int argc, char argv[])

{

CStream m_st = NULL;

FunP = &CStream::MyFun; //把函数名赋给函数指针变量 

(m_st->FunP)(20);

(m_st->FunP)(30);

}

ch;是不是你在别的地方复制的或者是你在抄这道题目时搞错了。我大概了解你这到题目的意思。这道题目应该是想通过函数指针调用函数fun。首先函数指针的定义就出错了。你题目里面的f1应该就是一个函数指针,但是它的定义应该这样char (f1)(char )=fun;

我首先来解释一下为什么这样定义吧。指针存放的是地址,那么函数指针也不例外了。而且你定义函数指针的时候要与你要调用的函数的形式一样,注意到没有上面我定义的时候返回值和形参的类型都相同。

定义好了函数指针那么现在就来帮它赋值,我们赋给函数指针的值要是地址,而函数名存放的就是函数在内存中的起始地址。所以我们只需要把函数名赋给函数指针就行了。

既然值都赋好了,我们下一步就应该调用它了。调用的时候应该这样f1(s);这里面的实参用s知道为什么吗?那是因为s也是一个字符型的指针变量和形参一样当然要这么调用了。

下面我就将程序写一遍吧

char fun(char c);

{

;(这是你要实现的fun函数的功能)

}

main()

{

char s="one";

int a[5]=;(上面的程序这里都没有将数组的类型申明出来,肯定是有问题的,这里如果是char类型即(char a[5]=),那么下面的答案还有另外一种)

char (f1)(char )=fun;

char ch;(这个变量应该是用来接收fun函数返回的值的)

ch=f1(s);(这就是调用fun函数了,如果上面的a数组时char类型那么还有之中情况ch=f1(a))

}

如果是考察函数指针的运用我想应该就是这样的,我不知道是不是你的题目抄错了还是我理解错了。函数指针调用如果是这样的话是绝对没错的。所以最后的答案最终只有两种结果

ch=f1(s)或ch=f1(a);

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12175400.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存