指针学习小记
Posted 小蒟蒻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针学习小记相关的知识,希望对你有一定的参考价值。
- 指针的值是指针本身存储的数值,这个值将被编译器当做一个地址,而不是一个一般的数值。在32位程序里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。
- 指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。
- 运算符:&是取地址运算符,*是“间接运算符”。&a的运算结果是一个指针,指针的类型是a的类型加个*,指针所指向的类型是a的类型,指针所指向的地址是a的地址。*p的结果是p所指向的东西,这个东西有这些特点:它的类型是p指向的类型,它所占用的地址是p所指向的地址。
- 一个表达式的最后结果如果是一个指针,那么这个表达式就叫指针表达式。(例:)
1 int a,b; 2 int array[10]; 3 int *pa; 4 pa=&a;//&a是一个指针表达式。 5 int **ptr=&pa;//&pa也是一个指针表达式。 6 *ptr=&b;//*ptr和&b都是指针表达式。 7 pa=array; 8 pa++;//这也是指针表达式。
- 可以声明一个指向结构类型对象的指针。
1 struct MyStruct 2 { 3 int a; 4 int b; 5 int c; 6 } 7 8 MyStruct ss={20,30,40};//声明了结构对象ss,并把ss的三个成员初始化为20,30和40。 9 MyStruct *ptr=&ss;//声明了一个指向结构对象ss的指针。它的类型是MyStruct*,它指向的类型是MyStruct。 10 int *pstr=(int*)&ss;//声明了一个指向结构对象ss的指针。但是它的类型和它指向的类型和ptr是不同的。
所以如何访问成员变量?
1 ptr->a;2 ptr->b;3 ptr->c;
以上只是摘抄的部分重点(个人认为),详情请见大神博文→_→:http://www.cnblogs.com/ggjucheng/archive/2011/12/13/2286391.html
以上是关于指针学习小记的主要内容,如果未能解决你的问题,请参考以下文章