Я предполагаю, что вы пытаетесь поменять содержимое массивов num1
и num2
, просто манипулируя указателями, так что после вызова fastswap
содержимое num1
будетбудет "class"
и num2
будет "hello"
.
Если это так, то это не будет работать по ряду причин.Массивы не являются указателями, хотя массив выражений часто преобразуется в типы указателей.Во-вторых, вы не можете изменить значение выражения массива.
Если вы хотите сохранить num1
и num2
в качестве массивов (в отличие от указателей на строковые литералы) и иметь возможность поменять их содержимое, вам нужно кое-что еще в этом духе:*
void fastswap(char *i, char *d)
{
while (*i && *d)
{
char t = *i;
*d++ = *i;
*i++ = t;
}
}
, который будет называться
fastswap(num1, num2);