为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这样循环输出结果是错误的?求指点

为什么这样循环输出结果是错误的?求指点

C
互换的青春 2023-04-01 18:14:18
#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));

查看完整回答
反对 回复 2023-04-03
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

printf("%d ",*(p+5)); 
这一句改成printf("%d ",*(p+i)); 
另外你fun返回的是局部变量 arr该变量的生命周期只在fun内 
你在主函数里面赋值给了p是有安全隐患的 

int arr[100];应改为 static int arr[100];

查看完整回答
反对 回复 2023-04-03
  • 2 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信