下面是一个代码剪断,我有一个更大的计划指针在C/C++编译但给人段错误错误
double *pos_x_h[224];
double *pos_y_h[224];
const double A = 1;
const int N = 224;
double d_0;
double alpha;
void initialize(double nu, int rows = 16, int columns = 14) {
double d = 1/double(columns);
d_0 = d * (1 - pow(2.0, nu - 8));
alpha = d - d_0;
double dx = d;
double dy = d * sqrt(3.0)/2;
for (int j = 0; j < rows; j++) {
for (int i = 0; i < columns; i++) {
int n = i + j * columns;
*pos_x_h[n] = i * dx + (j % 2) * dx/2.0;
*pos_y_h[n] = j * dy;
}
}
}
int main(int argc, char *argv[]) {
double nu=7.5;
int rows=16;
int columns=14;
initialize(nu);
return 0;
}
代码编译,但它是给出了赛格故障错误。看不到这是为什么。我要通过array_size吗?
'I + J * columns'会清醒地访问超出数组界限的元素。 – devnull
'void initialize(double nu,int rows = 16,int columns = 14);''和'initialize(nu);'? – someuser
您声明了2个指针数组,但从不初始化它们。 –