指针

来源:互联网 发布:2016软件工资待遇 编辑:程序博客网 时间:2024/05/17 03:26

1word=2bytes  1bytes=8bits(即1字=2字节  1字节=8位)

1.

声明: 数据类型* 标识符;//例: int* ptr;//定义了一个指针变量ptr

指针也是一种数据类型,指针变量是用来存放内存单元地址的。

地址编码的基本单位是字节,每个字节有8个二进制位组成。即每个字节是一个基本内存单位,有一个地址。


2."*"和"&"

"*":指针运算符
例:

int* p;//声明一个int型的指针变量cout<<*p<<endl;//取出指针p所指向的内容

"&":取地址运算符
例:

int &p;//声明一个int型的引用rfint a,b;int* pa,* pb=&b;//定义两个指针变量pa,pb.并取b的地址赋予pbpa=&a;//取a的地址赋予pa


3.指向常量的指针和指针类型的常量
(1)可以声明指向常量的指针,此时不能通过指针来改变所指对象的值,但指针本身可以改变,可以指向另外的对象

int a;const int* p1=&a;//p1是指向常量的指针int b;p1=&b;//正确,p1本身的值可以改变*p1=1;//编译时出错,不能通过p1改变来所指的对象
(2)可以声明指针类型的常量,这时指针本身的值不能改变
int* const p2=&a;p2=&b;//错误,p2是指针常量,值不能改变


4.
不同类型的指针之间或指针与非0整数之间的关系运算是毫无意义的。但是指针变量可以和整数0进行比较,0专门用来表示空指针,也就是一个不指向任何有效地址的指针。
小习惯:如果不便于用一个有效地址给一个指针变量赋初值,那么应当用0作为它的初值,从而避免指向不确定地址的指针出现。
例:
int *p;p=0;或int *p=NULL;

5.
数组名就是数组的首地址,也就是第一个元素的地址。
例:

int array[5];int* pri=array;//等价于 int* pri=&array[0];

取数组下标为i的元素: *(数组名+i);



0 0