簡體   English   中英

關於返回指針的函數的問題

[英]Questions about functions that return pointers

我正在嘗試了解一些分發代碼

typedef struct person
{
    struct person *parents[2];
    char alleles[2];
}
person;

person *create_family(int generations);

int main(void)
{
    person *p = create_family(GENERATIONS);
}

為什么我們必須將星號運算符放在我們的原型中。 是否總是需要在原型中包含星號運算符?

@Barmar 已經在評論中指出了這一點: *不是應用於 function 原型的運算符,而是指指針返回類型。

create_family(int generations) function 將person*或換句話說*指針返回到struct person

你也可以這樣寫:

person* create_family(int generations);

或者像這樣:

person * create_family(int generations);

這類似於向person結構聲明指針變量, *是變量類型聲明的一部分。

person *johnDoe = NULL;

另一方面,不同上下文中的*符號也用作解引用運算符。 這是相同的符號,但含義完全不同,運算符而不是類型聲明的一部分。

(*johnDoe).alleles[0] = 'G';
(*johnDoe).alleles[1] = 'T';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM