语者功设计 第6章指针 Ac
第 6 章 指针 C 语言项目设计 教程
任务1了解指针 任务分析: 熟悉指针的概念,掌握指针变量 的定义和引用以及指针作为函数参数 的用法。 BACK ◆→
任务分析: 熟悉指针的概念,掌握指针变量 的定义和引用以及指针作为函数参数 的用法。 任务1 了解指针
6.1.1地址和指针的概念 ◆地址 一计算机内存是以字节为单位的存储空间,内存的 每一个字节都有一个唯一的编号,这个编号就称 为地址。 - 按变量地址存取变量值的方式称为“直接访问” 方式。 一将一个变量的地址存放在另一个内存单元(即变 量)中,然后通过存放地址的变量来引用变量, 这种存放地址的变量是一种特殊的变量,我们称 它为指针变量。 BACK
地址 – 计算机内存是以字节为单位的存储空间,内存的 每一个字节都有一个唯一的编号,这个编号就称 为地址。 – 按变量地址存取变量值的方式称为“直接访问” 方式。 – 将一个变量的地址存放在另一个内存单元(即变 量)中,然后通过存放地址的变量来引用变量, 这种存放地址的变量是一种特殊的变量,我们称 它为指针变量。 6.1.1 地址和指针的概念
地址 内存单元 1010 a 1011 b 变量名 b 1012 66 1013 1014 地址 1011 1015 1016 1017 a)各变量在内存的地址 b)按变量b地址存放变量值 图6.2直接访问方式 BACK
地址 内存单元 1010 ◆1011 66 1012 b 1013 1014 1015 1016 1017 变量名P 变量名b 1011 2000 1011 地址2000 1011 2002 a)通过指针p指向的变量b存放变量值 b)各变量在内存的地址和用指针寻址 图6.3间接访问方式 BACK
6.1.2指向变量的指针变量 指针变量的定义 -用来存放数据地址的变量叫指针变量。指针 变量和其它类型的变量一样,也必须先定义 后使用。 - 定义格式: 数据类型*变量名[=地址表达式]: “数据类型”表示该指针可以指向何种类型的 数据,指针本身则是整型。“*”是一个说明 符,表示定义指针变量。 例如:intx,*pointer1;pointer1-=&x; 则pointer1表示x的内存地址
指针变量的定义 – 用来存放数据地址的变量叫指针变量。指针 变量和其它类型的变量一样,也必须先定义 后使用。 – 定义格式: 数据类型 *变量名[=地址表达式]; – “数据类型”表示该指针可以指向何种类型的 数据,指针本身则是整型。“*”是一个说明 符,表示定义指针变量。 – 例如:int x,*pointer1; pointer1=&x; 则pointer1表示x的内存地址。 6.1.2 指向变量的指针变量
练一练 ◆定义单精度浮点型变量a、指针变量p。 BACK ◆
练一练 定义单精度浮点型变量a、指针变量p
指针变量的引用 一1、与指针有关的两个运算符&和* (1)运算符& 取地址运算符,即取其操作数的内存地址。 一目运算符,优先级和结合性与+、-相同。 一般形式:&变量名或&数组元素名 如:&x 运算结果是x的地址 &a1运算结果是数组元素a[1]的地址 -例:定义intx,*y=&x, x的地址是3000,x的值是10,y=3000 思考:若x的值是100,y的值? BACK
指针变量的引用 – 1、与指针有关的两个运算符&和* – (1)运算符& 取地址运算符,即取其操作数的内存地址。 一目运算符,优先级和结合性与++、--相同。 一般形式:&变量名或&数组元素名 如:&x 运算结果是x的地址 &a[1] 运算结果是数组元素a[1]的地址 – 例:定义int x,*y=&x; x的地址是3000,x的值是10,y=3000 思考:若x的值是100,y的值?
(2)运算符* (间接)访问地址运算符,又称指针运算符, 取其变量的值。 一目运算符,优先级和结合性与++、-相同。 一般形式:*变量名 如:*p*q BACK
(2)运算符* – (间接)访问地址运算符,又称指针运算符, 取其变量的值。 一目运算符,优先级和结合性与++、--相同。 一般形式:*变量名 如:*p *q
2、指针指向对象(要访问的数据)的方法 (1)指针初始化 例:inta,*p=&a;/*指针p指向整型变量a*/ float x,y,*pl=&x,*p2=&y;/*指针pl和p2分 别指向实型变量x、y*/ intb[10],*q=b;/*指针q指向整型数组b*/ 2)用赋值语句给指针赋值 例:inta,b[l0],*p,*q p=&a, q-b; 注意:赋值语句中的指针前面不带 “*”号。 BACK
2、指针指向对象(要访问的数据)的方法 (1)指针初始化 例:int a,*p=&a; /* 指针p指向整型变量a */ float x,y,*p1=&x,*p2=&y; /* 指针p1和p2分 别指向实型变量x、y */ int b[10], *q=b; /* 指针q指向整型数组b */ (2)用赋值语句给指针赋值 例:int a,b[10],*p,*q; p=&a; q=b; 注意:赋值语句中的指针前面不带“*”号