zoukankan      html  css  js  c++  java
  • C之指针

    什么是指针

    * 指针变量:用来存储某种数据在内存中的地址.
    *
    世面上书籍一般把指针和指针变量的概念混在一起了.
    市面上的书籍说的指针指的就是指针变量

    Ø *号的三种含义
    1. 两个数相乘
    int i =5;
    int j = 5;
    i*j;

    2.
    基本类型* 表示这种类型的指针变量
    - 指向内存中这种类型的变量的地址
    int i= 3
    int* p;可以存放i的地址
    p=&i

    3. 指针变量前加* 表取出这个指针变量里的数据
      int* p;
      *p 把地址里的数据取出来

     指针常见错误
      * 野指针:指针变量没有定义指向的地址,该指针就不能赋值(点我就蓝屏)

      int* p;//声明一个指针变量用来存放一个地址
      //指针变量未经赋值,不可以使用.
      //*p 野指针.
      printf("*p=%d ",*p);

    * 每种数据类型的地址,必须用当前类型的指针变量表示

      double d = 3.14;
      int *p ;//
    指针变量存储int类型数据的地址
      //每种数据类型的地址,必须用当前数据类型的指针变量表示.
      p = &d;
      printf("*p=%lf ",*p);

    Ø 值传递和引用传递
      * 引用传递:如果传递的值是一个内存地址,通过这个地址可以找到地址对应的引用
      * 值传递:传递具体的数值
      * java语言中对象实际上存放在某个内存地址里面,传递对象就相当于传递的是内存地址(引用传递)

    Ø 指针的应用场景
      让函数返回一个以上的值
      直接访问硬件 (opengl 显卡绘图)
      快速传递数据(指针表示地址)
      表示复杂的数据结构(结构体)
      方便处理字符串
      指针有助于理解面向对象


      • 指针就是地址,地址就是指针

      • 地址就是内存单元的编号

      • 指针变量是存放地址的变量

      • 指针和指针变量是两个不同的概念

      • 但是要注意: 通常我们叙述时会把指针变量简称为指针,实际它们含义并不一样

     


    #include<stdio.h>
    
    #include<stdlib.h>
    
     
    
    main() {
    
    int i = 5;
    
    //写一个一级指针
    
    int* p = &i;
    
    printf("p = %d 
    ",*p);
    
     
    
    //二级指针
    
    int** pi = &p;
    
    printf("pi =%d 
    ",*(*pi));
    
    printf("pi =%d 
    ",**pi);
    
     
    
    //三级指针
    
    int*** pp = & pi;
    
    printf("pp = %d 
    ",***pp);
    
    }
    

  • 相关阅读:
    Matlab之rand(), randn(), randi()函数的使用方法
    matlab给图片插入说明文字
    matlab之find()函数
    excel根据数据源变化的动态图表
    高斯坐标
    (转)Mysql技术内幕InnoDB存储引擎-表&索引算法和锁
    (转)MySQL 插入数据时,中文乱码问题的解决
    (转)防止人为误操作MySQL数据库技巧一例
    (转)mysql explain详解
    (转)一个MySQL 5.7 分区表性能下降的案例分析
  • 原文地址:https://www.cnblogs.com/loaderman/p/6415530.html
Copyright © 2011-2022 走看看