第6章 C语言的指针理解 (一)

发布于:2023-01-04 ⋅ 阅读:(196) ⋅ 点赞:(0)

文档视频讲解链接地址

  1. 腾讯课堂链接 : 50_指针_指针的理解

6.1 指针理解

  1. 指针的优点

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

    • 在计算机内部存储器(简称内存)中,每一个字节单元,都有一个编号,称为地址。
    • 在C语言中,内存单元的地址称为指针,专门用来存放地址的变量,称为地址变量又叫指针变量(pointer variable)。
    • 在不影响理解的情况中,有时对地址、指针和指针变量不区分,通称指针
  3. 指针的概念

    • 一个地址对应一个字节
    • 一个变量会占用多个字节, 每一个字节占用一个地址, 因此一个变量会占用多个地址, 所谓的变量的地址是变量的起始地址 。

    01-c-75

  4. & 与 *运算符

    • &含义: 取变量的地址
      • 单目运算符 优先级: 2 结合性:自右向左
    • *含义: 取指针变量保存地址中的内容 , 还可以理解为 取地址中的值
      • 单目运算符 优先级: 2 结合性:自右向左
    • 两者关系:互为逆运算
  5. 指针变量与变量
    01-c-76

  6. 直接访问与间接访问

    • 直接访问:按变量地址存取变量值
    • 间接访问:通过存放变量地址的变量去访问变量
      01-c-77
  7. 实例71
    分别输出char , short ,int , long , float , double 类型的变量地址。

    • 源文件
    01-cbase\71-pointer1.c
    
    • 源代码
    #include <stdio.h>  
    
    int main(int argc, char const *argv[])
    {
        char a = 10 ; 
        short b  = 10 ; 
        int  c = 10 ; 
        long d = 10 ; 
        float e = 10.1 ; 
        double f = 10.1 ; 
    
        printf("&a = %p\n",&a); 
        printf("&b = %p\n",&b); 
        printf("&c = %p\n",&c); 
        printf("&d = %p\n",&d); 
        printf("&e = %p\n",&e); 
        printf("&f = %p\n",&f); 
    
    
        char  str[10] = {0} ;  // 数组中成员的地址是连续的 
        for(int i=0;i<10;i++)
        {
            printf("&str[%d]=%p\n",i,&str[i]); 
        }
    
    
        return 0;
    }
    
    
    • 运行结果
    &a = 000000000061FE1B
    &b = 000000000061FE18
    &c = 000000000061FE14
    &d = 000000000061FE10
    &e = 000000000061FE0C
    &f = 000000000061FE00
    &str[0]=000000000061FDF6
    &str[1]=000000000061FDF7
    &str[2]=000000000061FDF8
    &str[3]=000000000061FDF9
    &str[4]=000000000061FDFA
    &str[5]=000000000061FDFB
    &str[6]=000000000061FDFC
    &str[7]=000000000061FDFD
    &str[8]=000000000061FDFE
    &str[9]=000000000061FDFF
    
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到