zoukankan      html  css  js  c++  java
  • C语言学习:指针(笔记)

    1、C程序设计中使用指针的好处:

    • 使程序简洁、紧凑、高效;
    • 有效地表示复杂的数据结构;
    • 动态分配内存;
    • 得到多于一个的函数返回值。

    2、内存中每个字节都有自己唯一的编号————内存地址;

    • 在程序中声明一个变量,如int
      i;在程序被编译或者函数被调用时,为这个变量分配相应的内存单元,即分配多少个字节的长度的内存单元。变量就是对程序中数据存储空间的抽象。

    • 换句话说———内存相当于高楼大厦,每个房间(相当于内存单元)都有自己唯一的门牌号(即内存地址)。现在根据需要将1-4号房间,分配给大山使用,则这1-4号房间就叫做大山的房间,相当于int i;中的i ,而为i分配的内存单元由操作系统决定大小,木有操作系统,就由处理器决定。

    3、存储单元、内存地址及指针

    • 指针就是储存单元的地址。
    • 一个变量的指针就是该变量在内存中的存储单元的地址。
    • 存取变量中的数据有两种引用方式:

        直接引用:按变量名称存取变量的值。
      
        间接引用:将其变量的指针即该变量的内存地址,放在另一个新的变量中,则现在这个新的变量中存储的值就是原来变量的内存地址值,现在对新变量进行操作,就相当于根据原变量内存地址,对原变量进行存取操作!
      

    4、指针变量

    • 指针:一个内存的地址。直接就是内存地址
    • 指针变量:专门存放地址的变量。将变量的内存地址存入指针变量,则该指针变量的地址即指针就直接指向原变量的值。

    4.1 变量的指针和指向变量的指针变量

    • 变量的指针:就是变量的内存地址
    • 指向变量的指针变量:就是存放变量内存地址的变量。

      其中,用*表示指针变量所指向的对象。
      如:指针变量pa指向变量a。则*pa就表示pa的对象,即变量a。(此时*pa与a为同一个变量)

    • 指针:就是变量的地址。

    • 指针变量:是可以存放指针的变量。
    • 指针类型:由变量的类型决定。

      例:指针变量pa指向变量a,即表示变量pa中存放着变量a的内存地址。
      若 pa = &a; 则此时 *pa 与 a 是等价的。

    4.2 指针变量的定义与初始化

    4.2.1. 指针变量的定义
    一般形式:数据类型 *指针名;

    例:

         int *p1,*p2;
         float   *q ;
         static  char  *name;
    /*
    注意:
    1、int *p1,p2与 int *p1,p2不同,每个指针变量前都有一个*;
    2、指针变量名是p1,p2,不是*p1,*p2;
    3、指针变量只能指向定义时所规定类型的变量;int *p,a; char c; float x;  p只能指向a,不能指向c或x。
    */

    4.2.2 指针变量的初始化
    一般形式: 数据类型 *指针名=初始地址值;

    int i;
    int *p = &i;//注意:变量i必须在定义该指针*p变量前,已经定义,并且指针变量类型与变量i的类型一致
    int i;
    int *p=&i;
    int *q=p;//可以用已经初始化过的指针变量作初值。
    int i;
    static int *p=&i;//这是错误的,不能用auto变量的地址去初始化static型指针

    4.2.3 指针变量的引用

    • i_pointer—–指针变量,它的内容是地址量
    • *i_pointer—-指针的目标变量,它的内容是数据
    • &i_pointer—指针变量占用内存的地址

    5、指针与函数
    5.1 指针作为函数的参数 ——-地址传递
    好处:共享内存,“双向”传递

    传地址的特点:

    • 实参可以是变量、常量或表达式,其实参值是指针数据类型。
    • 在被调用函数中,可以通过地址间接访问主调函数中的变量,而达到改变主调函数的变量值。

    6、指针与一维数组

    [] 变址运算符
    a[i]  *(a+i)
    即 a[0] <=> *a
    ·········
    a[5] <=> *(a+5)

    7、关于数组名作为函数参数
    数组名作为函数的参数,实质上是指针作为函数的参数

    数组名作为函数参数,实参与形参的对应关系
    实参是数组名或指针变量,对应的形参可以是数组名或指针变量

  • 相关阅读:
    指针详解(C语言)
    JMeter接口测试示例(六)——上传文件
    JMeter接口测试示例(五)——添加Cookie
    JMeter接口测试示例(四)——添加HTTP信息头
    JMeter接口测试参数化(函数生成器)
    JMeter接口测试——参数化
    Bootstrap简介
    jQuery文档节点处理,克隆,each循环,动画效果,插件
    什么是 jQuery 和jQuery的基本选择器,层级选择器,基本筛选器
    BOM对象,math对象document对象的属性和操作和 事件的基本操作
  • 原文地址:https://www.cnblogs.com/MountDa/p/13174764.html
Copyright © 2011-2022 走看看