C++指针学习体会(一)

C++的难,难在体系庞大、概念繁多,集面向过程、面向对象及泛型编程于一身,有种贪大求全的感觉,突出的难点是指针、面向对象及多范式编程。结合个人学习体会,先谈谈对指针的初步认识。

1.指针是一个有类型的变量,如char、int、double等;

2.指针存储的是值的地址,而不是值本身,因此,指针名表示的就是地址,而同时指针变量也存储在内存中,也有其自身的地址;

3.*是解除引用运算符,应用于指针,可以得到该地址处所存储的值;&地址引用运算符,可以得到存储该值所在的内存地址。

有人问,既然指针是地址,通常用十六进制表示,看起来一样,那为什么还要区分int、double等类型呢?

因为int、double等类型的地址虽然看上去差不多,但int和double使用的字节数不同,它们存储值时使用的内部格式也不同,因此指针在声明时必须指定该指针所指向的数据的类型。

例:

<code>int data=0;int * p_data;p_data=&data;//上两句等价于int *p_data=&data;cout<<data>/<code>

在上例中,p_data是指针,表示的是地址,*p_data表示存储在该地址处的值,*p_data与int变量等效;&data是data变量的地址,与p_data等效。


C++指针学习体会(一)


*p_data的类型为int,p_data指向int类型,p_data的类型是指向int的指针(int*),int*是一种复合类型,即指向int的指针。声明指针时,对每一个指针变量,都要使用*。当我们看到*,除了乘号,就要知道其后面跟着的是一个指针,表示的是地址。

打个比喻,变量与地址就相当于一个人的姓名和身份证号码:当一个人出生后,他的身份证号码是唯一的,也就是当一个变量声明后,它的地址是固定的;这个人的名字可以更改,就像变量可以重新赋值一样。

当我们学习函数参数按引用传递时,对&引用运算符会有更深的体会。


分享到:


相關文章: