用指针交换二维数组元素时出现分段错误
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;
}
我正在尝试交换矩阵中的 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;
}