我將64個int數組傳遞給c中的函數。當我在函數內部打印p [1]時,與在主函數外部打印p [1]時不顯示相同的值。我得到的輸出是 「這是P [1]:0」 和 「此爲p [1]在函數內部:1」當我將數組傳遞給函數時,數值發生變化
下面是在主代碼:
for (int i=0; i < 64; i++){
if (((i+1)%4) == 0){
int new = ((i+1)/4)-1;
printf("this is p[1]: %d\n", p[1]);
gg[new] = getgg(&g, &p, i-3);
gp[new] = getgp(&p, i-3);
}
}
這裏是我的功能:
int getgg(int (*g)[64], int (*p)[64], int i){
printf("this is p[1] inside the function: %d\n", *p[1]);
if((*g[i+3]) || (*p[i+3] && *g[i+2]) || (*p[i+3] && *g[i+2] && *g[i+1]) || (*p[i+3] && *p[i+2] && *p[i+1] && *g[i])){
return 1;
}
else{
return 0;
}
}
請提供[mcve]。包括如何聲明'p'。 – kaylum
可能你的意思是'(* g)[i + 3]'等功能內部,很難肯定地說沒有MCVE –
這是[IOCCC]的代碼(http://www.ioccc.org/) ? – Lundin