黑马程序员技术交流社区

标题: 关于指针的总结 [打印本页]

作者: wangjunjun    时间: 2014-7-27 17:25
标题: 关于指针的总结
============    指针是一种数据类型  ================       

1)        指针也是一种变量,占有内存空间,用来保存内存地址
测试指针变量占有内存空间大小

2)*p操作内存
在指针声明时,*号表示所声明的变量为指针
在指针使用时,*号表示 操作 指针所指向的内存空间中的值
        *p相当于通过地址(p变量的值)找到一块内存;然后操作内存
        *p放在等号的左边赋值(给内存赋值)
        *p放在等号的右边取值(从内存获取值)

3)指针变量和它指向的内存块是两个不同的概念
//含义1 给p赋值p=0x1111; 只会改变指针变量值,不会改变所指的内容;p = p +1; //p++
//含义2 给*p赋值*p='a'; 不会改变指针变量的值,只会改变所指的内存块的值  
//含义3 =左边*p 表示 给内存赋值, =右边*p 表示取值 含义不同切结!
//含义4 =左边char *p
//含义5 保证所指的内存块能修改

4)指针是一种数据类型,是指它指向的内存空间的数据类型
含义1:指针步长(p++),根据所致内存空间的数据类型来确定
p++=(unsigned char )p+sizeof(a);
结论:指针的步长,根据所指内存空间类型来定

作者: James    时间: 2014-7-27 18:35
指针,数据类型的一种。它可以是变量,也可以是常量。总之,一个指针p,它保存着一个地址,某一块内存的地址。而*p,表示这块内存中的值,无论什么类型的值。那么在定义指针p之初,会给定一个类型,这个类型就是那块内存中值的类型。至于指针p自身的类型,就是“指针类型”,呵呵,有点绕。
作者: James    时间: 2014-7-27 18:51
标示符“=”,赋值运算符。它左边如果变量,那该变量一定是要被写入的。它右边如果有变量或表达式,那此变量或表达式一定要被取值或求值的。对于 *p = 而言, 处在 = 左边,一定是被写入某个值。对于 = *p 来说, 处在等号右边,一定是取*p所代表的内存块上的值。
总结: 被赋值对象 = 值的来源




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2