【发布时间】:2014-12-29 05:00:34
【问题描述】:
我是 C 的初学者。我浏览了现有的问题,但无法理解,因为它们涉及字符串和字符。这是我的代码的一小部分:
#define grid 32
int main (void)
{
int NU, NV, NP;
NU=(grid-1)*grid;
NV=grid*(grid-1);
NP=grid*grid;
double u[NU], uc[NU];
double v[NV], vc[NV];
double p[NP], pc[NP];
//Initialization
// Initializing u
for (i=0; i<(grid-1); i++)
{
for (j=0; j<(grid); j++)
{
int k=j*grid+i;
if (j==(grid-1))
{
u[k]=1.0;
}
else if (j==(grid-2) && i>0 && i<(grid-2))
{
u[k]=1.0;
}
else
{
u[k]=0.0;
}
}
}
// Initializing v
for (j=0; j<(grid-1); j++)
{
for (i=0; i<grid; i++)
{
int k=j*grid+i;
v[k]=0.0;
}
}
// Initializing p
for (j=0; j<grid; j++)
{
for (i=0; i<grid; i++)
{
int k=j*grid+i;
p[k]=1.0;
}
}
我正在尝试初始化这些数组,但出现分段错误。 请帮我解决这个问题。
【问题讨论】:
-
我需要查看数组初始化代码。
-
为什么不:
int NU = (grid-1) * grid;和int NV = grid * (grid-1);和int NP = grid * grid;,每个变量在创建时初始化? -
@JonathanLeffler 试过了,还是一样的问题。
-
哦 - 对不起;这是风格问题,而不是崩溃的根源。您是否处于任何类型的受限环境中(嵌入式系统,...)?您已经创建了 48 KiB 的阵列,这不应该对当今的大多数系统造成压力。你怎么知道是这些初始化崩溃了?您是否在循环集之间放置了
printf()语句,以便知道哪个循环崩溃了? (确保格式字符串每次都以换行符结尾。)
标签: c arrays segmentation-fault