编译时间C代码中的错误[从函数返回数组指针]
发布时间:2020-12-16 09:48:13 所属栏目:百科 来源:网络整理
导读:#includestdio.h#includestdlib.h#includemath.h#includeconio.hint main(){ int i,*ptr; ptr = func(); for(i=0;i20;i++) { printf("%d",ptr[i]); } return 0;}int * func(){ int *pointer; pointer = (int*)malloc(sizeof(int)*20); int i; for(i=0;i20;i+
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<conio.h> int main() { int i,*ptr; ptr = func(); for(i=0;i<20;i++) { printf("%d",ptr[i]); } return 0; } int * func() { int *pointer; pointer = (int*)malloc(sizeof(int)*20); int i; for(i=0;i<20;i++) { pointer[i] = i+1; } return pointer; } 错误: 为什么我收到此错误? 解决方法
因为你在没有先声明它的情况下调用func().这会导致编译器假设它将返回int,但是然后将该整数存储在指针中,这当然是相当可疑的.
通过将func()移动到main()之上来修复,因此在调用之前可以看到定义,或者在main()之前引入原型: int * func(); 此外,不带参数的函数应该是(void)在C和please don’t cast the return value of (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |