#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;
}