指针随笔
来源:互联网 发布:等花开杂货铺 淘宝 编辑:程序博客网 时间:2024/05/08 17:16
指针是c的最有意思的地方,同时也是最难理解的
1)理解“指针就是地址”这句话,正确的理解是指针也是一种变量,需要内存空间,当你声明的时候,也就创建了一个指针大小sizof(int *)的空间,那么这个空间内容可以放一个地址,也就是0xa00c9s这样的玩意。
2)指针既然是变量,那么就可以进行操作,那么我们就要开始理解指针的类型,如果我们定义了一个指针变量p,假设变量p的地址是0x001,那么p+1就会变为多少取决于指针的类型,如果类型的大小是2个字节的,那么p+1的地址会成为0x003.
3)开始理解数组和"[" "]" 操作符,
我们先看看"[" "]"操作符,定义一个指针变量p,你可以用p[2]表示*(p+2),这里仅仅是用不同的语法表示了同样的意思
回来瞅瞅数组int a[4],则表示直接分配了一段连续的内存,内存按顺序可以存储4个int, a[0], a[1],a[2], a[3]
那么,数组名a是什麽,潜规则多多让你晕菜
如果打印a+1你会发现他是整个数组的下边界的地址,即a数组的首地址加上整个数组的长度
在表达式int *p = a中,a变为了&a[0],即第一个元素的地址
如果a作为函数的参数,a又会退化为指向int *类型的指针,其实也就是&a[0]
要记住,a和p一个是数组名,一个是指针,前者不可进行++操作,同样a是不能够作为左值赋值的
4)为了让世界更复杂,我们迎来了多维数组和双星**
int a[2][3]同样具有退化功能,作为参数或者右值会变为指向(int *)[3]类型指针
而**理解起来就更麻烦,如果我们定义了int **p,那么p首先占用几个内存单元,里面内容放着一个地址0xbbb,那么地址0xbbb这个内存单元存的啥玩意了?还是一个地址比如0xccc,那么地址0xccc放着什么,是一个int类型的数据
瞎扯了这么多,也不知道说清楚了没有,呵呵
- 指针随笔
- 指针~随笔
- c指针随笔
- 随笔-指针相关
- 指针小随笔
- 函数指针--c++随笔
- C语言随笔(指针)
- C语言_指针随笔
- C语言学习一些指针随笔记
- C指针与二叉树学习随笔
- 随笔~我对指针的感悟
- 学习C指针的心得随笔
- 2015/12/22:指针-函数-数组随笔
- C++随笔——悬空指针
- iphone开发随笔-对c 指针的补充
- OpenCV随笔004-使用指针及迭代器遍历图像
- 矩阵乘法-指针的方法-动态malloc- 随笔(1)
- 【编码随笔】双重指针作形参的数组问题
- 循序渐进学Linux,一线Linux专家南非蚂蚁学习经验谈
- SOAP webserivce 和 RESTful webservice 对比及区别
- WdatePicker日历控制使用及onpicked
- php操作XML,读取数据和写入数据的方法
- Java基础:第一个Java程序
- 指针随笔
- imos 学习笔记五 抓拍 c#
- eclipse 导入静态类,自动代码提示静态方法
- 用脚本创建animator控制器
- tomcat 源码学习
- Spring Ioc就是对java反射及读取xml文件的使用的封装
- 心灵语句
- arguments对象
- Android 阴影学习