加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

编译时间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 malloc() in C中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读