[英]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.