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);
    
    }
    

  • 相关阅读:
    C# 从服务器下载文件
    不能使用联机NuGet 程序包
    NPOI之Excel——合并单元格、设置样式、输入公式
    jquery hover事件中 fadeIn和fadeOut 效果不能及时停止
    UVA 10519 !! Really Strange !!
    UVA 10359 Tiling
    UVA 10940 Throwing cards away II
    UVA 10079 Pizze Cutting
    UVA 763 Fibinary Numbers
    UVA 10229 Modular Fibonacci
  • 原文地址:https://www.cnblogs.com/loaderman/p/6415530.html
Copyright © 2011-2022 走看看