2016-09-08 142 views
-3

考慮參考指針和malloc的

int *p; 
auto & pp = p; 

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

爲什麼line1不是acceptible但line2是好的建議,他們是不同類型的。

爲什麼ppp不是同一類型?

+4

你知道'decltype(p)'和'decltype(pp)'是什麼嗎?如果是的話,答案應該是顯而易見的。如果不是,那*應該是你的問題。 –

+1

爲什麼使用'malloc'順便說一句? – Jarod42

+0

我敢打賭,你沒有在你的文章中包含的錯誤告訴你到底是什麼原因。 –

回答

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; 
    //... 
}