SXUstudent 2020-05-10 11:28 采纳率: 57.1%
浏览 178
已采纳

调用子函数返回的数组为什么会出现这样的数?这些数是地址吗?

我试过把子函数化作主函数,定义好输入数组并输出g[],是没有问题的,运行结果为1 0 0 0 1 0 0 0,不像这种返回是特别大的数


#include<stdio.h>
#define N 8
#define M 63
int *SCHS(int f[]){

    int i,g[N];
    for(i=0;i<N;i++)
    {
        if(f[i]==1)
            g[i]=i;
        else
            g[i]=0;
    }
    for(i=0;i<N;i++)
        g[i]=g[i]+f[i];

    for(i=0;i<N;i++)
    {
        if(g[i]%2)
            g[i]=1;
        else
            g[i]=0;
    }
    return g;
}

    void main(){
        int *a,*b;
        int f1[8]={1,0,0,0,1,0,0,1};
            a=SCHS(f1);
            printf("\n");
        for(int i=0;i<N;i++)
        {
        printf("%d ",a[i]);
        }
        printf("\n");//
        while(1);
    }

这是运行结果,很奇怪
![Valid XHTML]图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-05-10 11:31
    关注

    这些不是地址,而是因为数组越界了,或者没有初始化,访问到了随机的数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

    报告相同问题?

    问题事件

    • 已采纳回答 3月28日

    悬赏问题

    • ¥15 I350 Gigabit Network
    • ¥15 关于#abap#的问题,请各位专家解答!
    • ¥20 内网通过公网访问外网问题
    • ¥20 谁有这个东西 继续教育的
    • ¥15 怎么使请求通过cors
    • ¥15 WDM 驱动ACPI 相关疑问
    • ¥15 prism 跨窗体共享数据绑定 wpf
    • ¥15 hdl designer突然用不了系统的moduleware组件,请问有人遇到或者怎么解决吗?
    • ¥15 0基础计算机毕设,应该从哪开始?
    • ¥60 使用DKT40脑图划分ROI区域