//反转一个数组
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
//方法1、用指针进行反转
int nums[] = {21,23,34,45,66};
int numLens = sizeof(nums) / sizeof(int);
//指针取值的话,默认等于取第一个值nums = nums[0]
int* ptr_nums_start = nums; //指针指向数组第一个元素
int* ptr_nums_end = nums + numLens -1; //指针指向数组最后一个元素
int temp;
//cout << *ptr_nums_start << "\t" << *ptr_nums_end;
//这里要区分数组长度为奇数和偶数的情况,如果为奇数,则满足ptr_nums_start = ptr_nums_end时跳出循环,如果为偶数,则满足ptr_nums_start = ptr_nums_end - 1时跳出循环
while(ptr_nums_start != ptr_nums_end && ptr_nums_start != ptr_nums_end - 1){
temp = *ptr_nums_end;//指针指的值互换
*ptr_nums_end = *ptr_nums_start;
*ptr_nums_start = temp;
ptr_nums_start++;//指针指向加1
ptr_nums_end--;
}
cout << "方法1运行结果为:" << endl;
for(int i = 0; i < numLens; i++){
//cout << *(ptr_nums_start+i) << '\t';
cout << nums[i] << '\t';
}
cout << endl;//换行
//方法2、用一般的方法进行反转
int nums2[] = {21,23,34,99};
int numLens2 = sizeof(nums2) / sizeof(int);
int temp2;
for(int i = 0;i < numLens2 - 2 *i; i++){
temp = nums2[numLens2-1-i];
nums2[numLens2-1-i] = nums2[i];
nums2[i] = temp;
}
cout << "方法2运行结果为:" << endl;
//int* ptr_num = nums2;//取nums数组第一个元素
for(int i =0; i < numLens2;i++){//打印反转后的数组
cout << nums2[i] << '\t';
//cout << *(ptr_num + i) << '\t';//第二种打印数组方式
}
cout << endl;//换行
return 0;
}
//运行结果
方法1运行结果为:
66 45 34 23 21
方法2运行结果为:
99 34 23 21
Process returned 0 (0x0) execution time : 0.075 s
Press any key to continue.