#include<stdio.h>#include<stdlib.h>int * fun(int n){ int arr[100];int m=n;int k=0;for(int i=2;i<m;i++){for(int j=2;j<=i;j++){if(i%j==0){if(m%j==0)break;elseif(j==i)arr[k++]=i; }}}return arr;}int main(void){int *p=fun(40); int len =10;for(int i=0;i<len;i++)printf("%d ",*(p+5));}这样循环输出结果是错误的,但是我手动一个一个的输出就是正确的比如 printf("%d",*(p+0)), printf("%d",*(p+1)), printf("%d",*(p+2)), printf("%d",*(p+3))~~~~~`这样就正确
2 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
fun函数内arr是一个局部变量,return arr;是非法的,需要将int arr[100];改为:
int *arr=(int*)malloc(100*sizeof(int));
还有,printf("%d ",*(p+5));应该为printf("%d ",*(p+i));
慕的地8271018
TA贡献1796条经验 获得超4个赞
printf("%d ",*(p+5));
这一句改成printf("%d ",*(p+i));
另外你fun返回的是局部变量 arr该变量的生命周期只在fun内
你在主函数里面赋值给了p是有安全隐患的
int arr[100];应改为 static int arr[100];
- 2 回答
- 0 关注
- 135 浏览
添加回答
举报
0/150
提交
取消