#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));}這樣循環(huán)輸出結(jié)果是錯誤的,但是我手動一個一個的輸出就是正確的比如 printf("%d",*(p+0)), printf("%d",*(p+1)), printf("%d",*(p+2)), printf("%d",*(p+3))~~~~~`這樣就正確
2 回答

12345678_0001
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個贊
fun函數(shù)內(nèi)arr是一個局部變量,return arr;是非法的,需要將int arr[100];改為:
int *arr=(int*)malloc(100*sizeof(int));
還有,printf("%d ",*(p+5));應(yīng)該為printf("%d ",*(p+i));

慕的地8271018
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個贊
printf("%d ",*(p+5));
這一句改成printf("%d ",*(p+i));
另外你fun返回的是局部變量 arr該變量的生命周期只在fun內(nèi)
你在主函數(shù)里面賦值給了p是有安全隱患的
int arr[100];應(yīng)改為 static int arr[100];
- 2 回答
- 0 關(guān)注
- 174 瀏覽
添加回答
舉報(bào)
0/150
提交
取消