#include<stdio.h>
typedef struct node
{
int val;
struct node *link;
}hop;
main()
{
int c;
hop *m,*t;
m=(hop *)malloc(sizeof (hop));
m->val=10;
t=change_val(m);
printf("%d",t->val);
}
hop *change_val(node* m)
{
m->val=20;
return m;
}
但我在函數和賦值中出錯。我試圖在米前改變標誌。我也嘗試過使用雙指針。幫我。如何在C中返回指針?
你什麼錯誤? – StoryTeller
將'main()'改爲'int main(void)'。爲struct標記和typedef使用一致的名稱; 'node'和'hop'之間沒有明顯的關係,儘管它們指的是完全相同的東西。考慮完全刪除typedef,並將該類型稱爲「struct node」。您的malloc調用可以變得更簡單和更強大,以適應未來的代碼更改:'m = malloc(sizeof * m);'。如果你叫'malloc',你需要'#include'。你的編譯器*應該*已經警告過你;調整警告級別直到它發生。 –
並且不要忘記初始化結構的'link'成員。如果你的代碼編譯了,它必須由類似於C++編譯器的編譯器編譯(除了那些需要在使用之前聲明的所有函數),因爲'hop * change_val(node * m)'不應該編譯在C語言中,因爲類型'node'永遠不會被聲明(但是C++編譯器會在'struct node'聲明之後識別'node')。 –