zoukankan      html  css  js  c++  java
  • 指针总结与地址

    指针是为了方便对地址直接操作而增加的一个中间操作符。

    根据软件中间层的概念:

    变量直接由高级操作;

    地址直接由低级语言操作;

    指针贯通高级语言与低级语言之间,是一个幽灵类型,直接对内存地址和内存地址中的数据双向操作。

    最近在温故《C ++ primer》这本书,其中有一句话非常经典:

    When attempting to understand pointer declarations, read them
    from right to left.

    为什么要有指针:

    内存寻址的变种,是内存操作的接口;

    方便数据在内存层面的组织;是数据结构的的核心支持;

    是内存管理的有效工具;

    提供了控制流跳转的开发层面支持。

    变量:内存内容的标示;编程语言的直接操作对象;实质是操作内存对象;

    存在于可执行文件的符号表中;在进程中没有存在,进程中只有内存数据。

    指针的概念:(变量、类型、访问)

    1)指针变量是一种特殊的变量;

    2)指针变量作为变量,里面的数据是内存地址;

    3)指针的类型决定了指针访问的内存大小;

    4)指针内容语意:指针变量包含地址指向的内存单元的内容。

    变量是与数据对应的概念。

    指针变量是与内存地址对应的概念。

    指针的本质是内存地址;变量的本质是内存数据。

    指针可以无差别的访问进程的任何内存单元。

    指针的操作:

    指针的操作提供了内存的便捷访问方式(遍历、查询)。

    指针的形式:

    一、const指针

    1、const int* p和int const* p:两者意义是相同的。指向的内容是只读数据,不可以q改变;但是指向的地址可以改变。
    2、int* const p:必须先对指针初始化,而且指向的地址是只读的,不可以再被改变;但是指向的内容可以改变。
    3、const int* const p:既不可以改变指针指向的地址,也不可以改变指针指向的内容。
     
    二、指针数组:元素类型全是指针
    类型名称*数组名[数组长度]
    例如:
       char* pc[10]:字符指针数组,常用来可以表示一个字符串
     
    三、数组指针:指针指向数组名
    类型名称(*指针名)[数组长度]
    例如:
       int a[5] = {1,2,3,4,5};
       int (*temp)[5] = &a; //temp指向的是整个数组
    注意:
       1、定义指针时()不能丢掉,因为[]优先级比*高,若丢掉,就会变成指针数组。例如:int *temp[4]//数组4个元素都是int*。
       2、数组长度、元素类型必须与指针定义时给出的长度、类型相同。
     
    四、函数指针
    数据类型(*指针变量名称)(形式参数列表)
    本质:函数放在代码区,函数指针指向代码区,通过函数指针可以访问代码区中的内容。括号()不可以省。。。
    例如:float (*p)(float a,float y):float类型指针函数
         float* p(float x,float y):函数p返回值为float指针类型
     
    五、总结数组与指针的区别:

    1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。
    2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是"可变",所以我们常用指针来操作动态内存。
    3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。 

    因为第三条,当把数组名作为函数的形参进行传递时,该效果等同于传递一个同类型的指针。直接在程序当中调用 函数名(数组名)即可。

  • 相关阅读:
    Git 基础
    SharePoint 2013 对象模型操作"网站设置"菜单
    SharePoint 2013 隐藏部分Ribbon菜单
    SharePoint 2013 Designer系列之数据视图筛选
    SharePoint 2013 Designer系列之数据视图
    SharePoint 2013 Designer系列之自定义列表表单
    SharePoint 2013 设置自定义布局页
    SharePoint 2013 "通知我"功能简介
    SharePoint 2013 创建web应用程序报错"This page can’t be displayed"
    SharePoint 禁用本地回环的两个方法
  • 原文地址:https://www.cnblogs.com/feng9exe/p/7274629.html
Copyright © 2011-2022 走看看