码迷,mamicode.com
首页 > 编程语言 > 详细

C++学习笔记(五):指针

时间:2014-09-11 19:02:22      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   ar   strong   div   sp   log   

声明指针:

1 //指针声明 * 号左右的空格是可选的,下面的定义都是正确的
2 int *pointer1;
3 int* pointer2;
4 int*pointer3;
5 int * pointer4;
6 //注意: pointer5 是指针而 pointer6 不是
7 int *pointer5, pointer6;
8 //pointer7 和 pointer8 都是指针
9 int *pointer7, *pointer8;

指针的类型和指针所指向的类型:

1 //指针的类型是int*,表示为int对象的指针
2 //指针所指向的类型是int,表示该指针指向int对象
3 int *pointer1;

指针的值:

指针表示指向对象位于内存中的地址,对于32位的系统来说就是一个无符号的32位数字(最多表示4GB内存),64位系统就是一个无符号的64位数字;

取地址和取值:

取一个对象的地址使用&符号,取一个指针指向的对象的值使用*符号;

1 int num = 100;
2 int *p = #
3 p = 101;//错误, 这是直接改变指针的指向,指向内存地址101
4 *p = 101;//正确, 修改了num的值

空指针:

表示这个指针没有指向一块有意义的内存,对空指针应用delete是安全的。

1 //没有赋值的指针
2 int *p;
3 //赋值为NULL或0的指针
4 int *p = NULL;
5 int *p = 0;

指针的算术运算:

指针的加减法会以sizeof(指针指向的类型)来处理,比如:

1 int num = 100;
2 int *p = #
3 p++;//指针的地址指向+4之后的位置
4 ptr += 5;//指针的地址指向+20之后的位置

指向指针的指针:

指针同样可以指向另一个指针,

1 int **ptr;//指向一个int类型指针的指针

指针和数组:

数组的数组名其实可以看作一个指针,

1 int array[10]={0,1,2,3,4,5,6,7,8,9},value;
2 value=array[0];//也可写成:value=*array;
3 value=array[3];//也可写成:value=*(array+3);
4 value=array[4];//也可写成:value=*(array+4);

在表达式sizeof(array)中,数组名array代表数组本身,故这时sizeof函数测出的是整个数组的大小。

在表达式*array中,array扮演的是指针,因此这个表达式的结果就是数组第0号单元的值。sizeof(*array)测出的是数组单元的大小。

在很多情况下,可以相同的方式使用指针名和数组名。对于它们,可以使用数组方括号表示法,也可以使用解除引用运算符(*)。在多数表达式中,它们都表示地址。区别之一是,可以修改指针的值,而数
组名是常量。

成员调用:

结构变量.成员名

(*结构指针变量).成员名

结构指针变量->成员名

C++学习笔记(五):指针

标签:style   blog   color   使用   ar   strong   div   sp   log   

原文地址:http://www.cnblogs.com/hammerc/p/3966895.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!