1、指针变量的声明:
数据类型 *指针变量名;
int *p; //声明一个用于存储int型变量地址的指针变量p,即变量p是一个指向int类型的指针变量
2、指针变量的初始化
数据类型标识符 *指针变量名=初始地址值;
int i; //定义一个整型变量i,并为i分配内存空间
int *p=&i; //定义p为指针变量,并将i的地址赋值给指针变量p作为初值
特例:指向字符类型的指针变量可以对字符串进行初始化
char *str="Hello World"; //将字符串的第0个字符'H'的地址赋给指针变量str
3、一个程序:
1 void main() 2 { 3 char *p="hello world"; 4 cout<<*p<<endl; 5 cout<<&p<<endl; 6 cout<<p<<endl; 7 }
结果:
4、*和&运算符
*为指针运算符,用以返回指针变量所指向变量的值。
&为取地址运算符,用以返回变量的指针,即变量的地址。
例子:int *p; //声明p是一个int型的指针
y=*p; //将指针p所指向的值赋给y,即y是一个值,而不是指针
例子: int n=1;
int &q=n; //声明一个int型的引用名q,该引用名是变量n的别名
例子:int p=&x; //对指针变量p赋初值
5、数组指针:指向数组元素的指针称为数组指针。
6、在C++中,指针变量的基本单位为其指向的数据类型的变量所占用的字节数。
例子:int a[3];
int *p=a;
int *q=p+2;
cout<<p<<endl;
cout<<q<<endl;
p与q的地址正好相差:4*2=8
7、指针的动态分配存储--动态分配数组
1 int *p=new int [size]; 2 ... 3 delete []p;
8、返回指针的函数
char *str=(char *string,int c); //如:在字符串string中查找字符c,找到返回c的地址,否则返回NULL
char *str1=(char *string1,char *string2); //如:在字符串string1中查找子串string2,如果找到则返回string2在string1中的地址,否则返回NULL
9、指向函数的指针
<函数返回值类型>( * <指针的名字 >)(<参数>)
如:int (*p)(); //p为指向返回值为整型的函数指针
float(*q)(float,int); //q为指向返回值为浮点型函数的指针
如:
1 int *fun(); //返回地址的函数
2 int (*fun)(); //返回函数的指针
10、指针数组
一维指针数组: 数据类型 *数组名[下标表达式];
[下标表达式]指出数组元素的个数,数据类型确定指针的类型。 如:char *p[10]; //声明一个一维指针数组,包括10个元素,每个元素都是指向字符类型的指针