了解指针与指针变量的概念
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对变量:
先声明的变量,比后声明的变量,地址值大;
指针的关系运算 同类型的指针,可进行关系运算 可用关系运算符号 !=、==、<、<=、>=、>
14
5.1 指针类型
(3)指针间的比较 //示例2 5-7— #include <iostream.h> int main() { int a=1,b=2,c=3; int *pa=&a; int *pc=&c; if(pa!=NULL)cout<<"pa!=NULL"<<endl; cout<<“pa=”<<pa<<“ pc=”Βιβλιοθήκη Baidu<pc<<endl; //相差
//间接访问
8
//问题:指针变量的应用 //源程序:5_4.cpp #include <iostream.h> int main() { int a=2,b=3; int *pa,*pb,*max; pa=&a; pb=&b; if(a>b)max=&*pa; else max=&*pb; cout<<"max="<<*max<<endl; return 0; }
1.了解指针与指针变量的概念,指针与地址运算符,指针 第五章 指针、数组、结构体和共用体
与数组。
2.掌握一维数组的定义、初始化和访问,了解多维数组的 定义、 初始化和访问。 3.了解结构体和共用体的定义和访问。
1
第5章 内容
5.1 指针类型 5.2 数组 5.3 结构体和共用体
2
5.1 指针类型
12
5.1 指针类型
(2) 指针间的减法 int a=1,b=2,c=3,d=4; int *pa=&a; int *pb=&d; pa-pb 结果是3 单位为int的长度,即地址相差3×4=12字节。
注意的是两指针的相加、乘、除以,一般是无意义。
13
5.1 指针类型
(3)指针间的比较
一般地
5
2)指针变量的定义与使用 int a=2,b=3; int *pa,*pb; pa=&a; pb=&b; 或int *pa =&a, *pb =&b; 规则:指针运算符*表示“指向(的值)” 定义时: int *pa=&a; //定义指针变量pa,并取a的地址 赋给pa 使用时:*pa表示指针变量pa(其值为地址)所指向的变量 (值 )。 (1)*pa可与a相互代替,*pa能访问a的值 。
4
5.1 指针类型 2) 指针变量的定义
用于存储其他变量的地址的变量,为指针变量。 定义方法: 数据类型 *指针名; 如: int i; int *pi=&i; //定义指针变量pi,并取i的地址赋给pi 即指针变量其名为pi,其值为&i 注意 ① 使用变量名不带 *号, 指针名带*表示取值。 ② 指针的数据类型与所指的数据类型相同; ③ 指针可以动态的,(可在指向一个变量后,再指向其他变量)。
7
//问题:指针的引用 //源程序:5_3.cpp //#include <iostream.h> int main() { int a=2,b=3; int *pa,*pb; pa=&a; //指针变量的赋值 pb=&b; // cout<<"a="<<a<<" b="<<b<<endl; cout<<“*pa=”<<*pa<<“*pb=”<<*pb<<endl; *pa=1; //向pa所指向的变量赋值 *pb=*pa; //向pb所指向的变量赋值 cout<<"a="<<a<<" b="<<b<<endl; return 0; } 指针变量可用另一个指针变量赋值。 pa=pb;
如: *pa = 1;//等同于a = 1; *pb = 2;//等同于b = 2;
(2) 指针变量使用前须先赋初值,且只能赋值为具体有 效的地址. int a=2,b=3; int *pa,*pb; 然后 6
//源程序:2_2.cpp
5.1 指针类型
#include <iostream.h> int main() { int a=2,b=3; int *pa,*pb; pa=&a; pb=&b; cout<<"&a="<<&a<<" &b="<<&b<<endl; cout<<"pa="<<pa<<" pb="<<pb<<endl; return 0; }
9
5.1 指针类型
3) 指针变量的运算
指针变量的运算包括: (1)单指针变量的运算 (2)指针间的减法 (3)指针间的比较
10
5.1 指针类型
(1)单指针变量的运算。 指针使用前,必须检查其是否为空 如对 int *p; 用 if (p == NULL)来判断是否为空。
指针变量的单目运算 p+n 表示找到与当前指针偏移n个内存地址偏移量的 位置。 (p本身的值保持不变) 示例1: int a,b,c; int *pc=&c; 则 pc+1// 找到位置&b 11 pc+2 //找到位置&a
1) 地址的引入 2) 指针变量的定义 3) 指针变量的运算 4) const 对指针变量的约束
3
5.1 指针类型 1) 地址的引入
计算机内存由若干存储单元构成,每个存储单元有一个编 号; 存储单元的编号,称为相应数据的指针(地址)。 低 在一个程序中,内存分配的顺序 是从后向前,从右向左。 例如,对: int i; //(先声明, 放在高位) double j; //(后声明, 放在低位) 则在内存中的存储为: 复习: 变量: 是机器一个内存位置的符号名 高 在该内存位置可以保存数据,并可 通过符号名进行访问。 int a=3; & :取地址运算符,&a为变量a的地址。 * : 指针运算符,
5.1 指针类型
//问题:单指针运算//源程序:5_5.cpp #include <iostream.h> int main() { int a1=1,a2=2,a3=3,a4=4; int *pi=&a3; //pi指向a3的地址 double b1=0.1,b2=0.2,b3=0.3,b4=0.4; double *pd=&b1; //pd指向b1的地址 cout<<"a1="<<*(pi+2) <<" a2="<<*(pi+1) <<" a3="<<*pi <<" a4="<<*(pi-1)<<endl; cout<<"b1="<<*pd--; //显示pd所指向的变量的值,再执行pd=pd-1; cout<<" b2="<<*pd--; cout<<" b3="<<*pd--; cout<<" b4="<<*pd<<endl; return 0; }