2017-08-19 39 views
0

我在學習c,但是我理解指針的概念,但在這裏我遇到了麻煩。函數定義中的指針意味着什麼。這裏v是在函數中定義的局部指針,所以返回它意味着只有值將被複制並返回,或者返回指向該塊的指針,因爲我還了解到,局部變量只有在函數執行之前才具有生命時間。有人想解釋一下,會有很大的幫助。函數定義中的指針

struct verpl * nieuw (int van, int naar, int aantal, register struct verplaatsing * lijst) 
{ 
    register struct verpl * v = (struct verpl *) alloc(sizeof(struct verpl)); 
    aNieuw++; 
    v->van = van; 
    v->naar = naar; 
    v->aantal = aantal; 
    v->volg = lijst; // plaats het element vooraan in de lijst 
    return (v); 
} 

函數調用

lijst = nieuw (via, huidig->naar, huidig->aantal - 1, lijst); 
+1

首先:刪除'register's;他們只能傷害(第二:刪除劇組) – wildplasser

+0

你確定'alloc'? –

+0

我不明白爲什麼要傳遞'lijst'作爲函數參數'struct verplaatsing *'的一個參數,但是然後將函數返回值賦給它,這是'struct verpl *'類型。他們是不同的類型。 –

回答

0

返回什麼是指針值alloc()返回。

v是本地和返回指針指向v並不好,但什麼v指向不在本地,所以返回它是有效的。

+0

'alloc()'?是不是'malloc'?如果它是'alloca',那麼就有一個問題。 –

+0

@ Jean-FrançoisFabre'alloc()'作爲非標準庫存在。 [c - alloc,malloc和alloca - 有什麼區別? - [Stack Overflow](https://stackoverflow.com/questions/32685851/alloc-malloc-and-alloca-whats-the-difference)我不知道它是否是'malloc'或'alloca'的錯字。 – MikeCAT

+0

如果它是'alloca'的輸入錯誤,那麼代碼是錯誤的,因爲它在臨時內存上返回一個引用。 –