1.逆转字符串
int main()
{
char arr[] = "abcde";
reverse(arr);
printf("%s ", arr);
return 0;
}
>1.用指针去接收:
void reverse(char* str)
{
char len = strlen(str);
char* left = str;
char* right = str + len - 1;
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
int i = 0;
char len = strlen(str);
for (i = 0; i < len / 2; i++)
{
char* tmp = *(str + i);
*(str + i) = *(str+len - 1 - i);
*(str + len - 1 - i) = tmp;
}
>2.数组下标去接收
void reverse(char* str)
{
char len = strlen(str);
int i = 0;
for (i = 0; i < len / 2; i++)
{
int tmp = str[i];
str[i] = str[len - 1 - i];
str[len - 1 - i] = tmp;
}
}
2.逆转整型数组
逆转整形数组其实和字符串逻辑都是一样的,需要注意的是strlen函数只能用于求字符串长度;整形数组需要用sizeof函数,而且sizeof函数不能在函数内计算,需要进行传参,再引用。
>1.下标去接收
void reverse(int* str,int sz)
{
int j = 0;
for (j = 0; j < sz/2; j++)
{
int tmp = str[j];
str[j] = str[sz - 1-j];
str[sz - 1 - j] = tmp;
}
}
int main()
{
int arr[] = { 1,2,3,4,5 };
int sz = sizeof(arr) / sizeof(arr[0]);
reverse(arr,sz);
for (int i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
>2.指针去接收
void reverse(int* str,int sz)
{
int* left = str;
int* right = str + sz - 1;
while (left < right)
{
int tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}