gpt4 book ai didi

c - 尝试访问二维数组时出现 SIGSEGV 错误

转载 作者:太空宇宙 更新时间:2023-11-04 02:24:34 25 4
gpt4 key购买 nike

我想在 r*r 矩阵上做一个简单的转置函数。在我下面的代码中,当我到达 temp = mat[i][j] 行时,我得到了 SIGSEGV。但我真的不明白为什么。任何提示将不胜感激。

void transpose(int** mat, size_t col)
{
int i = 0;
int j = 0 ;

for(i= 0; i< col; ++i)
{
for(j = i ; j< col; ++j)
{
int temp = mat[i][j];
mat[i][j] = mat[j][i];
mat[j][i] = temp;
}
}
}
void printMat(int* arr, int size)
{
int i = 0;
for(i = 0 ; i< size*size ;++i)
{
printf("%d| ", arr[i]);
if((1+i)%size == 0)
{
printf("\n");
}
}
}
int main()
{
int arr[][3] = {{1,2,3},{4,5,6},{7,8,9}};
printMat((int*)arr, 3);
transpose((int**)arr, 3);
printMat((int*)arr, 3);

return 0;
}

最佳答案

void transpose(int** mat, size_t col) 表示您有一个指向指针数组的指针。

但是数组是单 block 内存

将 void transpose(int** mat, size_t col) 更改为

void transpose(int mat[][3], size_t col)

会起作用

关于c - 尝试访问二维数组时出现 SIGSEGV 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53176237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com