zoukankan      html  css  js  c++  java
  • 指针与指针变量深度理解及程序举例(初学者)

    如果已经执行了语句pointer_1=&a;

    (1)&*pointer_1的含义是什么?

    “&”和“*”两个运算符的优先级相同,但按自右向左方向结合,因此先进行*pointer_1的运算,再执行&运算。

    因此,&*pointer_1与&a相同,即变量a的地址。

    如果有:pointer_2=&*pointer_1;

    它的作用是将&a(a的地址)赋给pointer_2。

    (2)*&a的含义是什么?

    先进行&a运算,得a的地址,在进行*运算,即&a所指向的变量,即变量a。

    *&a和*pointer_1的作用是一样的,他们都等价于变量a,即*&a与a等价。

    (3)(*pointer_1)++相当于a++;

    注:括号是必要的,如果没有括号,就变成了*pointer_1++,由运算符的优先级与结合方向可知,它相当于*(pointer_1++)。

    例:输入a和b两个整数,按先大后小的顺序输出a和b。

    #include <stdafx.h>
    #include<stdio.h>
    
    void main()
    {
        int a,b,*p1,*p2,*p;
        scanf("%d%d
    ",&a,&b);
        p1=&a;
        p2=&b;
        if(a<b)
        {
            p=p1;
            p1=p2;
            p2=p;
        }
        printf("a=%d.b=%d
    ",a,b);
        printf("max=%d,min=%d
    ",*p1,*p2);
    }

     例:对输入的两个整数按大小顺序输出,这次用函数实现交换功能。

    #include <stdafx.h>
    #include<stdio.h>
    
    void swap(int*p1,int*p2);
    void main()
    {
        int a,b;
        int*pointer_1,*pointer_2;
        scanf("%d%d",&a,&b);
        pointer_1=&a;
        pointer_2=&b;
        if(a<b)
        {
            swap(pointer_1,pointer_2);
        }
        printf("
    %d>%d
    ",a,b);
    }
    void swap(int*p1,int*p2)
    {
        int temp;
        printf("swapping");
        temp=*p1;  //temp=a;
        *p1=*p2;    //a=b;
        *p2=temp;    //b=temp;
    }

    例:输入a,b,c三个整数,按大小顺序输出。

    #include <stdafx.h>
    #include<stdio.h>
    
    void swap(int*pt1,int*pt2);
    void exchange(int *q1,int *q2,int *q3);
    void main()
    {
        int a,b,c,*p1,*p2,*p3;
        scanf("%d%d%d",&a,&b,&c);
        p1=&a;
        p2=&b;
        p3=&c;
        exchange(p1,p2,p3);
        printf("%d,%d,%d
    ",a,b,c);
        
    }
    void exchange(int *q1,int *q2,int *q3)
    {
        if(*q1<*q2)
        {
            swap(q1,q2);
        }
        if(*q1<*q3)
        {
            swap(q1,q3);
        }
        if(*q2<*q3)
        {
            swap(q2,q3);
        }
        
    }
    void swap(int*pt1,int*pt2)
    {
        int temp;
        printf("swapping");
        temp=*pt1;  //temp=a;
        *pt1=*pt2;    //a=b;
        *pt2=temp;    //b=temp;
    }
  • 相关阅读:
    node.js
    js中文乱码问题
    238. Product of Array Except Self
    接下来要记得东西
    javascript 块内函数
    171. Excel Sheet Column Number
    Moore’s Voting Algorithm
    [ Python ] PIL
    [ Python ] KMP Algorithms
    房之事
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/10353270.html
Copyright © 2011-2022 走看看