我是C的新手,目前我正在尝试调试我的代码。我在这个特殊错误上遇到了死胡同。它给了我一个错误:
THREAD 1:EXC_BAD_ACCESS(代码= 2,地址= 0x7fff5fc00000)
错误出现在krec [0]部分。
我还没有弄清楚C中允许什么,写c时不允许什么。我希望有一些建议可以使我的代码更有效率。这是我的代码:
int k_vector_calculation(int krec[3])
{
int Boxx[3], Boxy[3], Boxz [3];
Boxx[0] = lx ;
Boxx[1] = 0 ;
Boxx[2] = 0 ;
Boxy[0] = 0 ;
Boxy[1] = ly ;
Boxy[2] = 0 ;
Boxz[0] = 0 ;
Boxz[1] = 0 ;
Boxz[2] = lz ;
int Productbc[3], Productac[3], Productab[3] ;
Productbc[0] = Boxy[1] * Boxz[2] ;
Productbc[1] = 0 ;
Productbc[2] = 0 ;
Productac[0] = 0 ;
Productac[1] = Boxx [0]* Boxz [2] ;
Productac[2] = 0 ;
Productab[0] = 0 ;
Productab[1] = 0 ;
Productab[2] = Boxx [0]* Boxy [1] ;
float V0 = 0;
V0 = lx*ly*lz ;
int u[3], v[3], w[3] ;
u[0] = 2*PI/V0*Productbc[0] ;
u[1] = 2*PI/V0*Productbc[1] ;
u[2] = 2*PI/V0*Productbc[2] ;
v[0] = 2*PI/V0*Productac[0] ;
v[1] = 2*PI/V0*Productac[1] ;
v[2] = 2*PI/V0*Productac[2] ;
w[0] = 2*PI/V0*Productab[0] ;
w[1] = 2*PI/V0*Productab[1] ;
w[2] = 2*PI/V0*Productab[2] ;
int l, m, o;
l = nearbyint(lx) ;
m = nearbyint(ly) ;
o = nearbyint(lz) ;
krec[0] = l*u[0]+m*v[0]+o*w[0] ;
krec[1] = l*u[1]+m*v[1]+o*w[1] ;
krec[2] = l*u[2]+m*v[2]+o*w[2] ;
return k_vector_calculation(&krec[3]);
}
答案 0 :(得分:1)
问题出在这里
return k_vector_calculation(&krec[3]);
您已通过int
数组krek[3]
,其中有效位置为krek[0]
,krek[1]
和krek[2]
。此外,您还有一个无限递归您在上一个return
语句中反复调用该函数。