2017-04-01 92 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

你在代碼中寫了'reutrn'而不​​是'return'。檢查你的最後幾行。

相關問題