#include<stdio.h>
int main()
{
int group[10]={1,2,4,2,5,1,5,3,4,3};
int upside(int g[],int n);
int *pointer;
int i;
pointer=upside(group,10);
for(i=0;i<10;i++)
printf("%d",*pointer++);
}
int upside(int *g,int n);
{
int i;
int lp[10];
for(i=0;i<n-1-i;i++)
{
lp[i]=g[n-1+i];
}
return(lp);#include<stdio.h>
int main()
{
int group[10]={1,2,4,2,5,1,5,3,4,3};
int upside(int g[],int n);
int *pointer;
int i;
pointer=upside(group,10);
for(i=0;i<10;i++)
printf("%d",*pointer++);
}
int upside(int g,int n);
{
int i;
int lp[10];
for(i=0;i<n-1-i;i++)
{
lp[i]=g[n-1+i];
}
return(lp);
}
[Error] C:\Users\T460s\Documents\C-Free\Temp\未命名1.cpp:8: error: invalid conversion from int' to
int'
子函数中局部变量创建的数组或对象是保存在内存的栈区,函数执行结束会被回收,
要把lp传递到函数之外,需要改用指针。并用malloc强制分配空间(malloc分配的空间保存在内存的堆区,函数执行结束不会被回收)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int group[10] = {1, 2, 4, 2, 5, 1, 5, 3, 4, 3};
int* upside(int g[], int n); //返回指针int*类型
int *pointer;
int i;
pointer = upside(group, 10);
for (i = 0; i < 10; i++)
printf("%d ", *pointer++);
}
//int upside(int *g, int n);
int* upside(int *g, int n) //返回指针int*类型, 最后的;号去掉
{
int i;
// int lp[10];
int *lp = (int *)malloc(sizeof(int)*10); //lp改为指针。并用malloc强制分配空间
for (i = 0; i < n; i++) // 是i < n
{
lp[i] = g[n - 1 - i]; // 是n - 1 - i 不是n - 1 + i
}
return (lp);
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
正常是可以的void代表无返回,int代表返回一个整型,子函数的声明应该在main函数前面
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!