0%

c指针的重新理解

2018年1月23日 下午8:14

总结

  1. 以问题的形式说明知识点
  2. 一个关于指针的口诀
  3. 理解数组名

一:以问题的形式说明知识点

前提:

Int a=1;
TYPE *pa=&a
假设a的地址是:0x12345678

第一个问题 :where

1. **指针变量存放在哪里?**
    1. 存放在内存中
2. **存放在内存中哪里?**
    1. 存放在&pa处
3. **为啥放在那里?**
    1. 编译时就决定了地址位置(这个结论来源于arm,我没有验证)

第二个问题:how 存

1. **如何存放别人的地址值?**
2. 小端方式存放别人的地址值(eg地址:0x12345678)

第三个问题:how 取

1. **如何取对应地址的处的值?**
2. 根据”步长“,也就是sizeof TYPE 的结果

二:一个关于指针的口诀

两变,两不变

两变:
1. 指向的内存地址
2. 每次+1走的步长
两不变:
1. 在32位linux系统中,指针本身占内存空间4个字节
1. 64位系统中,指针占8个字节
2. 指针指向的是被指向对象的起始地址,被指向对象多长不管

三:理解数组名(说的太好了)

c语言中数组名和指针变量的区别 - 立体风 - 博客园

附录:
老师的笔记: