[英]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
您將需要進行額外處理:
*val
分配內存: new_node->val=(char*)malloc(sizeof(char))
*(new_node->val)="a"
printf("%c",*(new_node->val))
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.