• 指针热身——指针基础概念


    #include <stdio.h>

    int main(void)

    {   

      //注:指针=地址,指针就是地址,地址就是指针,只是名字不同而已。   

      int * p;     //p是变量的名字,int * 表示该变量p指向存放int类型变量的地址    

            //int * p; 不表示定义了一个变量为*p的整型变量,而是定义了一个int*类型的变量p    

           //int *p; 应该这样理解,定义了一个变量名p,他的类型是int*类型,实际上就是存放了一个类型为int的地址

       int i=3;

           //  i是整型,因此指向变量i的指针变量p也必须是指向存放整型变量的地址。也就是说i是int类型,那么p就必须是int *类型。  

      p=&i;

                      /*    1、p保存了i的地址,也就是说p指向了i   

              2、p是个指针变量,而i是一个整型变量,故p不等于i,也就是说修改p的值不影响i的值,修改i的值不影响p的值    

              3、如果类型为int*的变量p指向了某个普通的变量,也就是说p保存了普通变量i的地址     *p 等价于 i :在程序当中出现*p的地方都可以用i来替换,出现i的地方都能够用*p来替换,*p与i 是完全等价相同的。

                4、*p与p是俩表示的意思是完全不一样的。*p与i等价,p与&i完全等价。   

           */

       return 0;

    }

      /*  指针和指针变量:(指针是一个值(常量),指针变量是用来存放指针的.他是一个变量)  指针:指针就是一个地址,地址是存储变量内存单元的编号(一般都是16进制)。故指针他是一个值,当你定义一个变量的时候,  系统会自动分配一个内存单元,内存单元是用来存储变量的值。但是这个内存单元有一个编号,这个编号就是地址。也就是指针。

        而指针变量:指针变量就是用来存储指针的,是一个变量。

      比喻:酒店的房间606号房间。606就是该房间的编号,也就是地址。也是指针。你去开房就相当于给你分配了一个内存空间。而指针变量就是用来存放   房间号的,比如说有606,607,608等等。而房间里面的客人就是值,指针指向的值。

      */

      /*

       *p:我谈谈对*的理解:  *: 降级的意思。也就是说有*的话,你可以理解成降级,p是地址,*p就是通过*进行降级,从内存单元的编号降级到内存单元里面的值。也就是地址  内的值。地址降级是值。行降级是列。p:地址,*p:降级是值,&(*p)=&i,

       */

    指针经典程序案例:

    #include<stdio.h>

    int main(void)

    {

      int a=3,b=5;

      swap_1(a,b);  //该调用时错误的

      printf("a=%d b=%d ",a,b); //a=3,b=5

      swap_2(a,b); //该调用时错误的

      printf("a=%d b=%d ",a,b);//a=3, b=5

      swap_3(a,b);  //正确

      printf("a=%d b=%d ",a,b);//a=5,b=3

      return 0;

    }

    void swap_1(int a, int b)

    {

      int temp;

      temp=a;

      a=b;

      b=temp;

    }

    void swap_2(int * p, int * q)

    {

      int * temp;

      temp=p;

      p=q;

      q=temp;

      

    }

    void swap_3(int * p, int * q)

    {

      int temp;

      temp=*p;

      *p=*q;

      *q=temp;

    }

  • 相关阅读:
    HttpClient request payload post请求
    【Linux】svn添加用户
    手机抓包fiddle4的安装及配置
    【论文笔记】Social Role-Aware Emotion Contagion in Image Social Networks
    【Linux】crontab 定时启动sh
    DIV+CSS网页设计规范
    【机器学习】粗糙集属性约简算法与mRMR算法的本质区别
    【机器学习】DBSCAN Algorithms基于密度的聚类算法
    【机器学习】EM的算法
    【机器学习】K-means聚类算法与EM算法
  • 原文地址:https://www.cnblogs.com/fengkui/p/5992490.html
Copyright © 2020-2023  润新知