簡體   English   中英

Typedef 結構、指針和指向 function 的指針

[英]Typedef struct, pointers and passing pointers to a function

我對編程有點陌生,所以如果有人可以在這里幫助我,我將不勝感激!


typedef struct /*struct for circle creation*/
{
  int x_coord;
  int y_coord;
  int radius;
} circle, *circlepointer;

我需要一個指向圓的指針,然后將該指針傳遞給 function,如果圓半徑大於 0,則返回 true,否則返回 false。 我如何將我的 *circlepointer 傳遞給 function 並檢查這個? 我應該能夠在 function 中執行類似 circle.radius > 0 的操作

希望你能幫忙

function 可以這樣聲明

int f( circlepointer c );

或者

int f( const circle *c );

並稱為

circle c = { /*...*/ };

f( &c );

在 function 中,您可以訪問 object 的數據成員,例如c->radius( *c ).radius

除了返回類型 int,您還可以使用 C 類型 _Bool。 或者您可以包含 header <stdbool.h>並將返回類型寫為bool

注意這兩個 function 聲明

int f( const circlepointer c );

int f( const circle *c );

不等價。 在第一個聲明中,指針本身是常量。 在第二個聲明中,指針指向的 object 是常量。

您可以通過這種方式聲明和定義您的 function

int func(circle * c) {
    return c->radius > 0;
}

通過指針訪問成員可以使用 -> 運算符或通過取消引用指針然后使用來完成。 操作員訪問其成員

(*c).radius 
c->radius

然后在 main 中調用它

circle c = {your_x, your_y, your_radius};
func(&c);

暫無
暫無

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

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