指针学习小结(一)[/b]
1、指针的概念
1.用来操作地址的特殊类型变量就是指针。
2.是一类包含了其他变量或函数的地址的变量。
3.指针就是用来存储内存地址的变量。
2、指针的定义
语法格式:
数据类型 * 变量标示符;
说明:
1.数据类型是指针指向的内存的数据类型。
2.变量标示符为合法标示符。
3.如果定义多个同一类型的变量,应用逗号将其分开;如果是定义多个同一类型的指针变量应该在变量前加“*”。
4.指针在使用前必须初始化。
例1如下:
int a=10,b=20; //定义两个整型变量
char sch1,sch2; //定义两个字符变量
int * pint1,*pint2=&b; //定义两个整型指针变量 pint1,pint2;并初始化pint2
char * pch1,pch2=&sch2 ; //定义两个字符指针变量pch1,pch2,并初始化pch2
pint1=&a; //初始化整型指针
pch1=&sch1; //初始化字符指针
3、关于指针的两个操作
操作符 * 作用:符号*称作间接访问运算符,对指针变量在内存中指向的数据操作。
用法 :
* 指针变量
操作符& 作用:符号&称作取地址运算符,对任何变量取地址操作。
用法:
&变量名
借例1中定义 :
*pint1; //对pint1在内存中指向的数据进行操作(a=10),相当于将 pint1=a;
pch1=&sch1; //将sch1中地址取出来赋值给pch1;
4、简单指针数据处理程序
1.程序如下:
//**********************************
//*******point001.cpp***************
//**********************************
# include <iostream.h>
void main(void)
{
int a=10,b=20;
int * p1,* p2; //*在这里只起定义作用,并非标示符p1,p2的一部分,p1,p2为指针变量。
p1=&a; //
p2=&b;//
cout<<"p1指向内存数据:"<< *p1<<'\t' //*********输出间接访问p1指向内存的数据值。
<<"p1指向内存的地址:"<<p1<<'\t' //**********输出指针变量p1指向的地址值。
<<"指针p1地址值:"<<&p1<<endl; //**********输出指针变量p1本身地址值
cout<<"p2指向内存数据:"<< *p2<<'\t'
<<"p2指向内存的地址:"<<p2<<'\t'
<<"指针p2地址值:"<<&p2<<endl;
}
2.程序运行前后内存数据变化演示
假设运行前内存状态
内存地址 内存数据 变量名
… … …
1000 10 a
… … …
1800 20 b
… … …
… … …
2000 … p1
… … …
2200 … p2
假设运行后内存状态
内存地址 内存数据 变量名
… … …
1000 10 a
… … …
1800 20 b
… … …
… … …
2000 1000 p1
… … …
2200 1800 p2
运行后内存状态
内存地址 内存数据 变量名
… … …
0X0012FF74 10 a
… … …
0X0012FF70 20 b
… … …
… … …
0X0012FF7C 0X0012FF74 p1
… … …
0X0012FF78 0X0012FF70 p2 |