用指针交换二维数组元素时出现分段错误

Segmentation error when swapping 2D array elements with pointers

我正在尝试交换矩阵中的 2 个值 - 第一行第二列中的值 (5) 和第 4 行第 3 列的值 (2).

编译后,当我尝试分配 *temp 的值时,程序由于分段错误而终止。我在下面附上了代码。

void swap(float *y)
{
    float *temp;
    *temp=*(y+1);
    *(y+1)=*(y+11);
    *(y+11)=*temp;
}

void main()
{
    float a[5][3]={{7,5,4},{2,7,4},{7,5,2},{8,4,2},{9,5,2}}, *aptr=&a[0][0];
    swap(aptr);
}

对于我的代码中的任何明显错误,我深表歉意,我是 C 的新手,我正在努力掌握指针的概念。

指针 temp 未初始化。因此取消引用指针会导致未定义的行为。

相反,您需要使用 float 类型的对象。

void swap(float *y)
{
    float temp;
    temp=*(y+1);
    *(y+1)=*(y+11);
    *(y+11)=temp;
}