2017-04-01 93 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'。检查你的最后几行。

相关问题