zoukankan      html  css  js  c++  java
  • 用指针实现逆序存放数组元素的值

    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
    

    最后

    在这里给大家准备了几百本的互联网技术类书籍,需要的来下载吧!点击获取
    有任何问题,欢迎随时交流!!!

  • 相关阅读:
    什么是Servlet
    Linux进程创建、执行和切换过程理解
    java实现验证码登录
    jsp页面如何动态显示当前时间
    java容器的一些存取用法
    java内存的那些事
    eclipse的常用快捷键
    二叉树前序、中序、后序遍历相互求法
    二叉树的遍历
    jsp添加背景音乐
  • 原文地址:https://www.cnblogs.com/johngo/p/14816845.html
Copyright © 2011-2022 走看看