2017-04-01 4 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;'을''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'을 썼습니다. 마지막 몇 줄을 확인하십시오.

관련 문제