现在的位置: 首页 > 综合 > 正文

C++ 6 指针

2016年02月05日 ⁄ 综合 ⁄ 共 1276字 ⁄ 字号 评论关闭
/*今天巩固下指针的相关知识。指针真的很强大,而且不深入的去了解它基本是过不了数据结构那关的
至少你可能连链表的定义都看不懂。其实到现在我也不嫩从本质把指针解释的一清二楚。一直想买本讲指针的书
自习研究下,但是看了评价都是太差劲,也就搁置了,但网上的确有不少好的博文,等等会推荐下的。
第六章 指针---我知道数据在哪里
6.1 指针到底什么
  答案是地址。指针的大小在32的机器中是固定大小的。4个字节。32位。其中8bit 是一个字节Byte .基础的知识
  要了解。指针存储的地址是8位16进制的数字。可以寻址4GB大小的空间了。基本上内存里的地方都能表示出来了。
 6.2 指针的概念 
 其实我个人更偏向于把指针当作一直数据类型来理解。只不过这个数据类型比较奇特,这个数据类型是用来存储
 地址的。所以我写指针的时候除非特殊,一般是把*号和数据类型写在一起的。指针存放别人的地址,那么就可以用地址
 来定位所指向的东西了。举个例子。如果需要把大量的数据发送给一个函数进行处理。两个办法,一是把数据拷贝一份
 过去,另一个办法就是把地址给它,有点类似于种子了。哈哈哈。总之指针真的很强大。
 地址是啥样: 16进制表示,8位数字。 换成二进制也就是32位。16进制和二进制存在 1对4的关系。
 6.3 声明和使用指针
 type* name  注意name 是指针, 而*name 不是指针。区分一个概念:指针的类型和指针指向的类型。
 怎么知道指针的类型。 把声明中的名称拿出来,剩余的就是指针的类型了。
 怎么看指针指向的类型: 把在变量名前的*和变量名一起拿出来,剩余的就指针指向的类型了。稍后的博文中会给
 详细讲解,这个地方我就不举详细例子了。
 & 取址操作符。 或得地址。
 * 间接操作符。 关于为什么叫做间接操作符是这样解释的:因为通过在指针前面加上*号可以操作指针指向的数据了,
 这个不就是间接操作嘛。所以看名字也是能看出点门道的。
 关于指针有很经典的例子了。经常看到的就是交换了。那个例子可能讲三种,传值,引用和传址。感兴趣自己搜下看看。
 6.5 指针的运算
 指针只能加减不能乘除。 
type* p   p++ ,等价于p+sizeof(type) 记住了。编译器会帮你自动转换。所以不是简单的加1.
6.6 指针和数组。
通过指针和间接操作符一般比下标更快点,少量看不出来。
*p++  同(*p)++   这个地方就设计到了运算符的优先级和结合性的问题。
* 和++ 符号是同优先级的,但是结合性却是从右像左的。所以*p++ 等同于*(p++)  记住后置++的连带作用。
比如c=a++ ,先把值a赋值给c 然后a会加一。记住他的连带性。
典型的例子是 : cout<<i;    i++   ;  
其实可以写成一句, cout<<i++ ;  和上面的效果是等价的。就是因为连带作用。
总结:
1)指针存放地址
2)取址操作符和间接操作符
3)传值和传址和引用。
4)指针和数组的混合使用。
5)用指针访问数组
6)数组的首地址是常量地址,所以你不能对它操作,比如递增。
7)二级指针就不说了,引用的博文讲的比我好了。
8)指针的运算。
9)字符指针的特殊性。自己实验下整形数组和字符数组。* /

我转载的一片博文中详细讲了,大家可以去看。

【上篇】
【下篇】

抱歉!评论已关闭.