day14笔记

本文详细介绍了指针在C/C++中的概念,包括地址、指针值、类型、运算符(&、*)、指针变量的定义、二级指针、void*、内存操作函数以及指针与数组的关系。同时探讨了const关键字在指针中的使用和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针高级
    1.概念
        地址:内存中用来区分不同字节的地址编号;
        指针:指针的值是一个地址编号,指针具有指向性
                指针指向一段连续的内存空间
                    值:指向空间的起始地址编号;
                    类型:指向的连续内存空间的大小
        指针变量:指针变量是用来保存指针类型数据的变量;
    
    2.运算符 & *
        (1)取地址运算符:获取一个指向操作数变量的指针;
        (2)指针运算符:获取操作数指针所指向的空间;
        注意事项:1.&运算符只能操作变量,*运算符只能操作指针;
                  2.取地址运算符具有类型升级作用,指针运算符具有类型降级 *(寻址)p(指针) == a
    
    3.指针变量
        (1)指针变量的定义:
            数据类型 *变量名;
            int *p;
        
        #define P_INT int *
            P_INT p, q; 
            p:是一个int *指针
            q:是一个int
        typedef int *pInt_t;
        pInt_t p, q;
            p:是一个int *指针
            q:是一个int *指针
            
    4.二级指针:
        含义:指向一级指针的指针;
        
            用途:1.被调想要修改主调空间的值,就需要对主调空间类型&,得到指向该类型的指针;
                  2.指针的数组,在函数传参时,数组名对应类型为指向元素一级指针的指针;
                int arry0[5];
                arry0 是 int *常量
                int *arry[5];
                arry 是 int **常量
            
    5.void *
        void:缺省类型 不能定义void类型变量
        void *:万能接收指针,接收任何类型的指针;
        memset:内存设置
        memcpy:内存拷贝
        memcmp:内存比较
    
    6.指针的算数运算
        +:p + N;
        -:p - N;
           p0 - p1:
        ++:p++;
        --:p--;
    
    7.const 关键字
        read-only:
        
    注意:1.const关键字在定义变量时一定要初始化;
          2.const修饰的只读变量p,仅仅指不能通过变量名修改;
          
    1.const char *p;
    2.char const *p;
    3.char * const p;
    4.const char * const p;
    5.char const * const p;
            
    1和2:定义了一个指针变量p,变量p自身可以被修改,p指向的空间不能被修改,*p = 不能作为左值;
    3:定义了一个指针变量p,变量p自身空间不可以被修改,p指向的空间可以被修改,p = 不能作为左值;
    4和5:定义了一个指针变量p,变量p自身空间不可以被修改,p指向的空间不能被修改,p = 不能作为左值,*p = 不能作为左值;
    
    8.指针数组
        指针的数组:是一个数组,元素是指针;
        int *a[5];
            定义了一个数组,数组的数组名a,a包含了5个元素,元素的类型是int *;
    
    9.数组指针
        数组的指针:是一个指针,指向整个数组;
        int (*p)[5]
            定义了一个指针,指针指向一个数组,数组有5个元素,每个元素都是int;
    
    10.指针和数组的关系    
        数组的数组名是指向数组首元素的指针;
        int a[10];
        int *p = a;
        a[i] == *(a + i) == *(p + i) == p[i];
        
        指针和二维数组的关系:
        int a[3][5];        类型             &后类型             *后类型                        
            a                 int ()[3][5];     int (*)[3][5];        int ()[5];
            a[i]            int ()[5];         int (*)[5];            int 
            a[i][j]            int                 int *               --- 
            
            
            
            
            
            
            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值