Кажется, вы пытаетесь поменять местами элементы первого ряда с элементами первого столбца.
Для начала массивы переменной длины не являются стандартной функцией C ++. Хотя некоторые компиляторы имеют свои собственные языковые расширения, вам следует избегать их использования.
Кроме того, функция swap может иметь неопределенное поведение, поскольку при переполнении целого числа со знаком результат не определен. Лучше использовать стандартную функцию C ++ std::swap
. И в вашей программе вы используете неинициализированный массив.
Вот демонстрационная программа, которая показывает, как вы могли бы написать код
#include <iostream>
#include <utility>
int main()
{
const size_t N = 3;
int a[N][N];
for ( size_t i = 0; i < N; i++ )
{
for ( size_t j = 0; j < N; j++ )
{
a[i][j] = i * N + j;
}
}
for ( const auto &row : a )
{
for ( const auto &item : row )
{
std::cout << item << ' ';
}
std::cout << '\n';
}
std::cout << '\n';
for ( size_t i = 0; i < N; i++ )
{
std::swap( a[0][i], a[i][0] );
}
for ( const auto &row : a )
{
for ( const auto &item : row )
{
std::cout << item << ' ';
}
std::cout << '\n';
}
std::cout << '\n';
return 0;
}
Его вывод
0 1 2
3 4 5
6 7 8
0 3 6
1 4 5
2 7 8
Если вы хотите написать свою собственную функцию подкачки, напишите ее как
void swap( int *a, int *b )
{
int tmp = *a;
*a = *b;
*b = tmp;
}
и используйте ее в программе, например
::swap( &a[0][i], &a[i][0] );