簡體   English   中英

用->運算符初始化結構指針

[英]Initializing an structure pointer with -> operator

我必須使用指向它的點來初始化結構,以這種方式,upper_left是點(10,25)和lower_right(20,15)

struct point {int x, y;};
struct rectangle {struct point upper_left, lower_right;};

struct rectangle *p;

p = malloc(sizeof(*p));

p->upper_left.x = 10;
p->upper_left.y = 25;
p->lower_right.x = 20;
p->lower_right.y = 15;


有什么方法可以使它更“緊湊”,而不是一一對應嗎? 我已經嘗試過了,但是編譯器的錯誤是相同的“'{'令牌之前的預期表達式”

p->upper_left = {10, 25};
p->lower_right = {20,15};

/////////////
p->upper_left = {.x = 10, .y = 25};
p->lower_right = {.x = 20, .y = 15};

//////////////////////////////

*p = {.upper_left = {10, 25}, .lower_right = {20, 15}};

是復合文字

  p->upper_left = (struct point){10, 25};

  *p = (struct rectangle){.upper_left = {10, 25}, .lower_right = {20, 15}};

您可以在這里進行實驗: https//godbolt.org/z/yw_JC0

暫無
暫無

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

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