【问题标题】:Reference to pointer and malloc引用指针和malloc
【发布时间】:2016-09-08 19:54:37
【问题描述】:

考虑

int *p;
auto & pp = p;

 pp = (decltype(pp))malloc(sizeof(decltype(*pp))); //line1
 pp = (decltype(p))malloc(sizeof(decltype(*p))); //line2

为什么line1 是不可接受的,但line2 可以暗示它们属于不同类型。

为什么pp 和p 不是同一类型?

【问题讨论】:

  • 你知道decltype(p) 和decltype(pp) 是什么吗?如果是,答案应该是显而易见的。如果不是,那个应该是你的问题。
  • 为什么要使用malloc BTW?
  • 我敢打赌,您未能在帖子中包含的错误会告诉您确切的原因。
  • @KerrekSB,问题是为什么pp 和p 不是同一类型
  • @user4581301:那么那应该是你的问题。

标签: c++ c++11 malloc decltype


【解决方案1】:

pp 是对 int * 的引用

根据https://msdn.microsoft.com/en-us/library/dd293667.aspx

“以下代码片段将变量 x 初始化为 int 类型,将变量 y 初始化为对 const int 类型的引用,将变量 fp 初始化为指向返回 int 类型的函数的指针。” C++

int f(int x) { return x; }
int main()
{
    auto x = f(0);
    const auto & y = f(1);
    int (*p)(int x);
    p = f;
    auto fp = p;
    //...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2018-02-10
    • 2016-07-05
    • 2016-09-29
    • 2014-04-12
    • 1970-01-01
    • 2014-11-06
    相关资源
    最近更新 更多