学习指针的一天

1. 指针的基本概念

         1. 地址:用来区分不同内存字节空间的编号;

         2. 指针:指针就是地址、地址就是指针;地址是一个编号,指针多了指向的概念;

         3. 指针变量:一个用来存放指针(地址)的变量;使用变量就是使用变量中存放的指针,有时也将指针变量称为指针;

2. 指针相关的运算符

        &:获得变量在内存空间的首地址;

        *:(若作为左值) *p = 1000;

        将右值放入指针指向的空间;

            (若为右值) *p;  *(p+1);

        直接取指针对应空间的值;

        若*和&同时出现,等价于去掉*&运算符后的结果;

3. 指针变量的定义:

    数据类型 *变量名;

4. 指针的初始化:

        int *p = NULL;

        NULL:空指针(指向内存地址为0x0的指针);

5. 指针的算术运算:

        两个相同类型的指针相减:获得两个地址中间相差了多少个该类型的元素;

6. 指针常见的操作:

       1. 指针变量本身(也就是p),修改p的值可以改变指针的指向;

       2. 指针变量指向的空间(也就是* p),修改*p的值并不能改变指针变量的指向,只是利用指针修改对应空间中的值;

7. 指针作为函数参数:

       1. 函数的值传递:

         实参将值传递给形参,形参改变,实参不会改变;

         函数体内想使用函数体外变量值的时候使用复制传递;

       2. 地址传递:

         实参将地址给形参,形参是实参的指针,可以通过对形参取*改变实参的值;

         函数体内想修改函数体外变量值的时候使用地址传递;

8. 指针和数组的关系:

        1. 指针和一维数组的关系:

           数组的数组名是指向数组第一个元素的指针;

           a == &a[0];

           访问数组下标为n的元素:

           a[n] ==  *(a+n) == *(p+n) == p[n]

           指针[偏移量] == *(指针 + 偏移量)

9. 数组作为函数参数:

        第一种:

        int fun(int array[], int len)

        第二种:

        int fun(int array[5])

        第三种:(常用)

        int fun(int *parray, int len)

        注意:三种传入的均为指针;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值