指针的相关知识

1.指针

指针就是地址;
    地址:在内存空间当中, 以字节作为基本单位, 每一个字节都有一个独一无二的编号, 这个编号就是地址。
        
    指针变量:存放地址的变量
    在不影响的前提下,把地址、指针变量都叫指针    
 
       

指针变量:
        存储类型  数据类型   *指针变量名;
                 int  *p; 

sizeof(int *)   --->  8字节
sizeof(char *)   --->  8字节
  

eg:
                int a = 10;
                int *p;
                p = &a;


初始化:
        int a = 10;
        int *p = &a;

赋值:
        int a = 10;
        int b = 20;
        int *p; 
        p = &a;
        p = &b;    
            
            
            
       int *p;  --> 野指针          
       int *p = NULL;    
        
            
*:取内容符 (操作符) 
       int a = 10;
       int *p = &a;  

       printf("%d\n", *p);    

2.大端序和小端序

大端序:低位数据放在高地址
小端序:低位数据放在低地址   
   
    
int a = 0x01020304;
char *p = &a;

printf("%d\n", *p);   ---> 4  

      

3.指针支持的运算

p + n: 以p指向位置作为基准,往高地址方向偏移n个元素, sizeof(元素类型) * n  个字节数
p - n: 以p指向位置作为基准,往低地址方向偏移n个元素, sizeof(元素类型) * n  个字节数  

p++: 以p指向位置作为基准,往高地址方向偏移n个元素, sizeof(元素类型) * n  个字节数 , 指针指向偏移后       的地址
p--: 以p指向位置作为基准,往低地址方向偏移n个元素, sizeof(元素类型) * n  个字节数 , 指针指向偏移后       的地址       

p - q: 结果为中间间隔的元素个数;  必须是同种类型的指针   
    
 
逻辑运算    
真假:
     NULL 为假, 非NULL 为真;    NULL 是  零地址的宏。
 
关系运算
    >  <  >=  <=  ==  !=  
    
    
    
变址运算符:[]  
    
    int a[5] = {1,2,3,4,5};
       int *p = a;

    int *p;
    p = a;

    p[i] == *(p + i)  ==  a[i]  ==  *(a + i)
    
    
        
        
& *:互为逆运算    

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值