【发布时间】:2026-01-30 19:35:01
【问题描述】:
我尝试了很多事情,但它仍然告诉我,存在未处理的异常:VS 中的访问冲突写入位置。但是当我对一维数组进行排序时不会发生这种情况。接下来我可以尝试什么?
int main(void) {
static int a[3][4]{}, ab[3][4]{};
int i, j, k, N, M;
int* a1=nullptr;
printf("Matrica mora da ima velicinu 3 sa 4\n");
printf("Enter the order \n\n\t");
scanf_s("%d%d",&N ,&M);
for (i = 0;i < M;++i)
{
for (j = 0;j < N;++j)
{
scanf_s(" %d", &a[i][j]);
ab[i][j] = a[i][j];
}
printf("\n");
}
for (i = 0;i < M;++i) {
for (j = 0;j < N;++j) {
printf(" %d", a[i][j]);
}
printf("\n ");
}
//classic sorting
for (i=0; i < M; ++i)
{
for (j = 0;j < N;++j)
{
for (k = j + 1;j < N;++k)
if (a[i][j] > a[i][k])
{
*a1 = a[i][j]; // there is exception thrown
a[i][j] = a[i][k];
a[i][k] = *a1;
}
}
}
【问题讨论】:
-
使用调试器。赋值时
a1的值是多少? -
a1 值为 0 和?
-
static int a[3][4]{}不是有效的 C 语法。这是一个有效的 C++ 语法。 C 和 C++ 是不同的语言。如果您使用 C 编写,请使用 C 编译器。如果您使用 C++ 编写,请使用 C++ 功能,并将您的问题标记为“c++”。