一个关于c++函数的问题


#include<iostream>
#include<algorithm>
using namespace std;
int *big( int a[]){
    int t=0;
    int b[7]={4};
    int *rere=new int(t);
    int k=sizeof(a)/sizeof(int);
    reverse(a,a+5);//反转 
    int re[7];
    int j=0;
    for(int i=0;i<k-1;i++){
        re[i+j]=a[i]*b[j];//相乘 
        
    }
    for(int i=0;i<6;i++){
        if(re[i]>9){
            re[i+1]=re[i+1]+re[i]/10;
            re[i] %= 10;//进位 
        }    
    }
    if(re[5]==0){
        for(int i=0;i<5;i++){
            rere[i]=re[i];
        }
    }
    else{
        for(int i=0;i<6;i++){
            rere[i]=re[i];
        }
    }
    return rere;
} 
int main(){
    int b[5]={1,2,3,4,5};
    big(b);
    for(int i=0;i<5;i++){
        cout<<b[i];
    }
    return 0;
}
    

函数功能不必细究哈,只是为什么我return rere,却得不到正确结果。
(把函数单独拉出来测试是没问题的,是不是调用时或返回时出了问题)

你并没有用到big的返回值啊

你这代码根本就不行
int *rere=new int(t);只是定义了一个整型指针,但你代码里把它当数组用,都是越界访问。rere到底需要定义多少长度呢?

int *big()函数里:

 int* big(int a[],int n) {
    int t = 0;
    int b[7] = { 4 };//这里赋初值,只有b[0]=4,其余元素为不确定值.
    for (int i = 0; i < 7; i++)
         b[i] = 4;
    int* rere = new int(n);//数组申请的空间为0长度?
    int k = n;//sizeof(a) / sizeof(int);//数组a[]的长度在这得到的是1,因为数组a作为函数形参,传递到函数内退化为指针。
   ...
}

主函数:

int main() {
    int b[5] = { 1,2,3,4,5 };
    int* a;
    a=big(b,5);
    for (int i = 0; i < 5; i++) {
        cout << a[i] << " ";
    }
    return 0;
}