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
    

    最后

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

  • 相关阅读:
    【发现】visualvm是jdk自带的一款监控工具
    【java】使用jsp命令查看系统中java运行的程序及进程号
    使用软件FileZilla, 通过sftp协议实现windows与linux系统传输文件
    学习spring源码-可参考的资料
    [JS]截取字符,中英文都可以
    ubuntu中在线升级python
    Python中NumPy基础使用
    Web Deploy发布网站一条龙解决方案
    C# lazy<T>的用法
    asp.net 验证正则表达式
  • 原文地址:https://www.cnblogs.com/johngo/p/14816845.html
Copyright © 2011-2022 走看看