我学C语言的日子(6)(7)

DAY6/7指针专题重点笔记:

取地址运算,一切都是地址“&”
&不能对没有地址的东西取地址:&(a+b)? ;&(a++)?;&(++a)?
互相反作⽤

*&yptr -> * (&yptr) -> * (yptr的地址)-> 得到那个地址上的变量 -> yptr
&*yptr -> &(*yptr) -> &(y) -> 得到y的地址,也就是yptr -> yptr

  1. 内存以字节byte(8bit)为单位,开始编号,称之为地址
  2. 内存的地址称为指针 int *p; 申明一个指针
  3. 指针的数据类型必需与目标一至 int a = 10; p = &a;
  4. 指针存目标地址,变量取地址&,存放地址的指针名称为指针变量
  5. *p 通过指针取出目标值 printf("%d", *p);
  6. p 一个指针变量, *p 指针目标的值 &p 指针的地址
  7. 指针大小跟据系统位数改变大小 sizeof()
  8. 指针运算是对地址量进行计算,主要是 + - ++ – = 和逻辑运算符
  9. 两个指针相减得到一个整数是数据的个数,而不是地址量
  10. 指针关系运算是对指向地址进行比较
  11. 返回0(nil)NULL为空
  12. 行指针变量,叫做行指针变量。
  13. 字符指针,字符串指针
  14. 指针数组,由若干个类型相同指针变量构成的集合
  15. 指针展开表达式
  16. 多级指针,指向指针的指针叫做多级指,
  17. void指针,在没有强制转换之前不能进行算术运算
  18. const修饰符,修饰谁谁变常量
  19. *是因为出现在赋值号左边的不是变量,⽽是值是特殊的值,所以叫做左值

数组变量是特殊的指针

  • 数组变量本⾝表达地址,所以
    • int a[10]; int*p=a; // ⽆需⽤&取地址
    • 但是数组的单元表达的是变量,需要⽤&取地址
    • a == &a[0]
  • []运算符可以对数组做,也可以对指针做:
    • p[0] <> a[0]
    • *运算符可以对指针做,也可以对数组做:
    • *a = 25;
    • 数组变量是const的指针,所以不能被赋值
    • int a[] <
    > int * const a=….
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值