簡體   English   中英

將變量賦給struct成員

[英]Assign variable to struct member

我已經創建了一個帶有char變量的結構。 我想在方法中使用它時為其分配一個字符串值,然后打印它。 我一直在環顧四周,但找不到有效的答案,但找不到我做錯了什么。 為什么我會收到以下錯誤?

這是我嘗試過的:

struct node{
    char *val;
    struct node *first;
    struct node *last;
};


void main(){
      struct node *new_node;
new_node =(struct node *)malloc(sizeof(struct node));
   new_node.val = "a";
   printf("%s",new_node.val);
}

我收到錯誤:

request for member 'val' in something not a structure or union

new_node應該作為指針而不是實例來訪問。 嘗試new_node->val而不是new_node.val

對已編輯問題的響應當您從char val更改為char *val您將需要進行額外處理:

  1. *val分配內存: new_node->val=(char*)malloc(sizeof(char))
  2. 賦值將需要取消引用指針: *(new_node->val)="a"
  3. Print語句也應該取消引用指針: printf("%c",*(new_node->val))
  4. 你應該在釋放new_node之前釋放val指針: free(new_node->val)

new_node.val應替換為new_node-> val。 因為new_node是一個指針。 請記住,new_node-> val(經常被稱為箭頭運算符)是(* new_node).val的簡寫。

另外我相信你可以寫:

node *new_node = malloc(sizeof(node));

為了更容易閱讀和更清晰的代碼,因為malloc只返回指向給定內存地址的指針。 在編譯程序時使用-Wall或其他警告標志,以減少邏輯錯誤或seg故障。

暫無
暫無

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

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