2017-04-01 12 views
-2

assign()関数を使用して、構造体ポインタ変数lに格納している構造体のメモリを割り当てています。
しかし、私はこのコードを実行すると言うエラーがある:構造体ポインタを返そうとしています

「リターン」このスコープで宣言されていなかったが。

コード

#include<stdio.h> 
#include<stdlib.h> 
typedef struct list { 
     int a; 
     char c; 
    }; 

list *assign(); 
int main() { 
    list *l; 
    l = assign(); 
    l->a = 20; 
    printf("%d",l->a); 


    return 0; 
} 
list *assign() { 
    list *ptr = (list*)malloc(sizeof(list)); 
    reutrn ptr; 
} 
+3

'reutrn ptr;'を 'return ptr;'に変更します。 –

+0

完了したらメモリをフリーズすることを忘れないでください。メモリの懸念を機能から分離することはさらに良いでしょう。コンストラクタ/デストラクタが必要な場合は、両方を記述します。懸念を分けることで、より明確で明確なコードを作成し、プロジェクトの成長に伴うメモリリークのリスクを最小限に抑えます。 – Myst

答えて

1
#include <stdio.h> 
#include <stdlib.h> 

typedef struct { 
     int a; 
     char c; 
    }list; 

list *assign(); 
int main() { 
    list *l; 
    l = assign(); 
    l->a = 20; 
    printf("%d",l->a); 


    return 0; 
} 
list *assign() { 
    list *ptr = (list*)malloc(sizeof(list)); 
    return ptr; 
} 

あなたはリターンをスペルミスして、あなたの構造体の名前を与えていません。

+1

私はとても愚かですあなたの時間を無駄にして申し訳ありません – kryptokinght

1

コードに「return」の代わりに「reutrn」を書きました。最後の数行を確認してください。

関連する問題