回 帖 发 新 帖 刷新版面

主题:函数传回阵列吗?

很单纯的函数,就是要传动回阵列,该怎么写啊... ...
网路上都找不到,大约太简单了。
下面的有报错...
[img]C:\Documents and Settings\v00727\桌面\d.bmp[/img]
[code=c]
#include <stdio.h>
#include <stdlib.h>
int *arrint(){
    int data[]={1,2,3,4,5,6,7};
    return data;
}
char *arrstr(){
    char data[]={'a','b','c','\0'};
    return data;
}

void main(){
    int *a=arrint();
    int i=0;
    for(i=0;i<7;i++){
        printf("%d",a[i]);
    }
    printf("\n");    
    char *b=arrstr();
    printf("%s",b);
    int j=0;
    while(b[j++]){
        printf("%c",b[i]);
    }
    
}
[/code]

回复列表 (共1个回复)

沙发

我来告诉你,你在函数里面定义的int data[]=...这个数组只存在于内存的栈区,函数执行完后内存会在某个时刻释放,因此你再在后面执行 
for(i=0;i<7;i++){
        printf("%d",a[i]);
    }
是错误的。
你可以这样:
int *arrint(){
    int* data=new int[7];
    for(int i=0;i<7;i++)
       data[i]=i;
    return data;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册