1 题目
函数:invert()
功能:用指针实现逆序存放数组元素的值
描述:使用指针将数组中的元素值逆序放置,并且将结果打印出来
2 思路
1. 程序变量中两个数字进行交换的三种方法
第一种:引入一个中间量
temp=a;
a=b;
b=temp;
第二种:要注意的是a+b可能会超过int的范围,这个是该方法的缺点
a=a+b;
b=a-b;
a=a-b;
第三种:这种方法效率最高,推荐使用
a=a^b;
b=a^b;
a=a^b;
2. 指针的使用
使用指针对数组内容进行操作,数组 a, a 指向数组首位置,a+N-1 指向最后一位。从而利用循环对数组的首尾数字逐个替换
3 代码
#include <stdio.h>
#include <stdlib.h>
#define N 10
/**
函数:invert()
功能:用指针实现逆序存放数组元素的值
描述:使用指针将数组中的元素值逆序放置,并且将结果打印出来
**/
void invert(int *a) {
int *begin, *end, mid; // 定义首尾指针
begin = a;
end = a+N-1;
mid = (N-1)/2; // 中间位置
int temp;
for (int i = 0; i <= mid; ++i){ // 循环,首尾指针内容变换
// temp = *begin;
// *begin = *end;
// *end = temp;
*begin = *begin ^ *end;
*end = *begin ^ *end;
*begin = *begin ^ *end;
++begin;
--end;
}
}
int main(int argc, char const *argv[]) {
int a[N] = {1,2,3,4,5,6,7,8,9,10};
printf("当前数组中的值为:");
for (int i = 0; i < N; ++i) {
printf("%d ", *(a+i));
}
printf("
");
invert(a);
printf("使用指针逆序后数组中的值为:");
for (int i = 0; i < N; ++i) {
printf("%d ", *(a+i));
}
printf("
");
}
示例结果:
$ gcc ex018.c -o demo
$ ./demo
当前数组中的值为:1 2 3 4 5 6 7 8 9 10
使用指针逆序后数组中的值为:10 9 8 7 6 5 4 3 2 1
最后
在这里给大家准备了几百本的互联网技术类书籍,需要的来下载吧!点击获取
有任何问题,欢迎随时交流!!!