gpt4 book ai didi

c++ - 了解 C++ 中的声明

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:39 24 4
gpt4 key购买 nike

我正在通过简单的步骤阅读 C++,遇到了一段我不理解的引用和指针代码。

代码是void (* fn) (int& a, int* b) = add;。据我所知,它不会影响程序本身,但想知道这段代码的作用。

#include <iostream>
using namespace std;

void add (int& a, int* b)
{
cout << "Total: " << (a+ *b) << endl;
}

int main()
{
int num = 100, sum = 200;
int rNum = num;
int* ptr = &num;

void (* fn) (int& a, int* b) = add;

cout << "reference: " << rNum << endl;
cout << "pointer: " << *ptr << endl;

ptr = &sum;
cout << "pointer now: " << *ptr << endl;
add(rNum, ptr);
return 0;
}

最佳答案

使用螺旋法则:

     +----------------------+
| +--+ |
| ^ | |
void (* fn ) (int& a, int* b) = add;
^ | | |
| +-----+ |
+---------------------------+

fn 是一个指向带有两个参数的函数的指针(一个名为 aint& 和一个 int*命名为 b) 并返回 void。函数指针是用自由函数 add 复制初始化的。

那么在你的代码中你有:

add(rNum, ptr);

这可以等效地替换为:

fn(rNum, ptr);

关于c++ - 了解 C++ 中的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31789147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com