sswy 发表于 2019-5-13 20:55:22

难道是小甲鱼老师讲错了?

本帖最后由 sswy 于 2019-5-13 20:57 编辑

int dwy(int);
int dwy(int a)
{
        return a * a;
}

int main()
{
        int num = 2;
        int (*p)(int);

        p = &dwy;

        (*p)(num);

}

函数指针,指向一个函数名,函数名即是函数地址.

我把dwy地址给p,但是p指向的并不是dwy的地址,小甲鱼老师不是说函数指针指向的是函数的地址吗?

jackz007 发表于 2019-5-13 21:06:49

本帖最后由 jackz007 于 2019-5-13 21:07 编辑

      你写错了,p 指向 dwy() 表达为 p = dwy

      下面的代码可以证明这种写法是正确的。
#include <stdio.h>

int dwy(int a)
{
      return a * a               ;
}

int main()
{
      int num = 2                ;
      int (*p)(int)            ;
      p = dwy                  ;
      num = (* p)(num)         ;
      printf("num = %d\n" , num) ;
}

sswy 发表于 2019-5-13 22:01:02

jackz007 发表于 2019-5-13 21:06
你写错了,p 指向 dwy() 表达为 p = dwy

      下面的代码可以证明这种写法是正确的。

sswy 发表于 2019-5-13 22:02:53

jackz007 发表于 2019-5-13 21:06
你写错了,p 指向 dwy() 表达为 p = dwy

      下面的代码可以证明这种写法是正确的。

p=&dwy 还是 p=dwy我都实验过的,一样的和我判断, p这个形参指向的是一个0x00af13de的内存地址,而实际的dwy函数地址是0x00af5060

jackz007 发表于 2019-5-13 22:04:20

本帖最后由 jackz007 于 2019-5-13 22:07 编辑

sswy 发表于 2019-5-13 22:01


      只要可以通过指针 p 调用这个函数 dwy() 不就说明问题了吗,你到底想证明什么?

sswy 发表于 2019-5-13 22:08:57

jackz007 发表于 2019-5-13 21:06
你写错了,p 指向 dwy() 表达为 p = dwy

      下面的代码可以证明这种写法是正确的。

sswy 发表于 2019-5-13 22:09:49

jackz007 发表于 2019-5-13 22:04
只要可以通过指针 p 调用这个函数 dwy() 不就说明问题了吗,你到底想证明什么?

不想证明什么老师,我学习,不懂得问下,谢谢你回答
页: [1]
查看完整版本: 难道是小甲鱼老师讲错了?