zoukankan      html  css  js  c++  java
  • 三、指针

    1.内存地址就是一个编号,这些编号都是连续的,称作地址。编号对应的内存以字节为单位划分。
    2.内存地址的大小与数据总线的位数有关
    3.内存访问分为:直接访问和间接访问
    ①直接访问:直接访问内存单元中的内容
    示例:
    int a = 20 ;
    对于直接访问,a代表存放数据的内存单元,通过对a赋值或者取值,实现对内存的访问
    ②间接访问:通过内存单元编号(地址)以及数据所占字节数访问内存中的数据
    间接访问在程序中随处可见,通过指针实现内存的间接访问
    4.指针:就是地址。内存地址,我们习惯上把内存地址叫做指针。
    5.地址:内存编号。内存地址可以简称为地址。“&”查看一个变量的内存地址。“%p”打印地址
    6.关键符号:“&”取地址符 
    7.指针变量:存储内存地址的变量
    8.定义指针变量:需要在前面加*
    此时 * 仅仅起到表示作用,告诉编译器 p 一个存放 地址 的变量,p是一个指针变量
    示例:
    int a = 20;
    int *p = &a;//(int *)p = &a;
    9.取值符号 *
    使用 * 号访问内存编号里面对应的内容
    示例:
    int a = 5;//定义一个整型
    int *p = NULL;//定义一个指针变量,地址为空
    p = &a;//获取a的地址
    printf(“%d”,*p);//*p获取a中的内容
    10.给指针变量赋值,意味着指针的重指向
    11.指针的类型:
    ①因为内存地址只跟操作系统有关,所以指针变量所占的内存大小取决于操作位数(32位系统指针占4个字节,64位系统指针占8个字节)
    示例:
    int *p = NULL;
    double *p1 = NULL;
    float *p2 = NULL;
    long *p3 = NULL;
    char *p4 = NULL;
    printf(“%lu ”,sizeof(p));//8个字节
    printf(“%lu ”,sizeof(p1));//8个字节
    printf(“%lu ”,sizeof(p2));//8个字节
    printf(“%lu ”,sizeof(p3));//8个字节
    printf(“%lu ”,sizeof(p4));//8个字节
    因为只要是地址,都是8个字节。地址字节数与数据类型无关,数据类型管控从哪开始取,取多少字节。
    ②int *p 整型指针 double *p 双精度指针 char *p 字符指针
    ③不同类型的指针,访问的内存大小不一样
    12.内存怎么来的
    ①手动申请(malloc函数)
    ②系统分配(定义变量的内存空间都是系统分配的)
    13.指针变量加减一个常数,指针本身不移动
    14.指针变量自增自减,指针移动,地址发生变化。
    15.指针类型一定要和指向内存中的数据类型一致。
    16.补码:①符号位不变②其他位取反③最后一位加1
    17.数组名是一个符号地址常量,不是变量,所以不能自增、自减
  • 相关阅读:
    Python3——爬取淘宝评论
    python爬虫 URL分析
    python3爬取网页图片
    python_2 / python_3 区别与安装问题
    vue.$nextTick 解决了哪些问题
    Vue 路由缓存
    vue elementui form表单验证
    Hadoop Hive sql 语法详解
    sql server, mysql, oracle平时用法的区别
    Excel中值得收藏的12个函数公式
  • 原文地址:https://www.cnblogs.com/gnhxsk/p/5170635.html
Copyright © 2011-2022 走看看