第7章地址和指针 7.1址和指针的概念 72指变量的定义和指变量的基类型 7.3给指变量值 7.4劝指针变量的续作 7.5指针在函数方面的应用 点专此处结束放殃 4合
第7章 地址和指针 7.1 地址和指针的概念 7.2 指针变量的定义和指针变量的基类型 7.3 给指针变量赋值 7.4 对指针变量的操作 7.5 指针在函数方面的应用
71地址和指针的概念 7.1.1地址和指针的概念 1.“地址”的概念 〓2.存储单元“地址”的表示 三3.“指针”的概念 点专此处结束放殃 4合
7.1 地址和指针的概念 7.1.1 地址和指针的概念 1. “地址”的概念 2.存储单元“地址”的表示 3. “指针”的概念
凹7.1.2为什么使用指针 使用指针,实现了“间接访问”变量, 这只是一个过程,其实质是可以达到方便 地引用数组,提高计算机的运行效率,调 用函数时可以修改或返回多个参数值,还 可以描述更复杂的数据结构,….为了加 深读者对指针重要性的理解,下面我们举 函数调用的实例。 点专此处结束放殃 4合
7.1.2 为什么使用指针 使用指针,实现了“间接访问”变量, 这只是一个过程,其实质是可以达到方便 地引用数组,提高计算机的运行效率,调 用函数时可以修改或返回多个参数值,还 可以描述更复杂的数据结构,……为了加 深读者对指针重要性的理解,下面我们举 一函数调用的实例
例7.1欲想调用f函数,计算出两个 数相加和相减的值,然后在main函数中显 示结果 程序如下 fun(int x, int y fint add=0, sub=0; add=x+ sub=x-y; 点专此处结束放殃 4合
例7.1 欲想调用fun函数,计算出两个 数相加和相减的值,然后在main函数中显 示结果。 程序如下: fun ( int x , int y ) { int add=0 , sub=0 ; add=x+y ; sub=x–y ; }
main( fint a, b, add=0, sub=0 scanf(od od &a, &b); printf (a=%d, b=%d n",a, b); fun(a, b)i printf (9d+ %d=%d n",a, b, add); printf (%od-%d=%d In,a, b, sub); 点专此处结束放殃 4合
main ( ) { int a , b , add=0 , sub=0 ; scanf ( " %d %d " , &a , &b ) ; printf ( " a=%d , b=%d \n " , a , b ) ; fun ( a , b ) ; printf ( " %d + %d =%d \n " , a , b , add ) ; printf ( " %d – %d =%d \n " , a , b , sub ) ; }
假设程序运行时给变量a输入8,给变 量b输入5,程序运行结果: a=8,b=5 8+5=0 8-5=0 点专此处结束放殃 4合
假设程序运行时给变量a输入8,给变 量b输入5,程序运行结果: a=8 , b=5 8 + 5=0 8 – 5=0
程序运行结果与我们“想象”的不 致,为什么呢?其原因是fun函数中变量 add和sub与main函数中变量add和sub各自 占用自己的存储单元,因此fun函数中变量 ad存放的两个数的求和值无法传回到 main函数的变量add中,同理,fun函数中 变量sub存放的两个数的相减值也无法传回 到main函数的变量中。下面我们修改一下 源程序,借助指针,将fn函数中运行的结 果传回到main函数中。 点专此处结束放殃 4合
程序运行结果与我们“想象”的不一 致,为什么呢?其原因是fun 函数中变量 add和sub与main函数中变量add和sub各自 占用自己的存储单元,因此fun函数中变量 add存放的两个数的求和值无法传回到 main函数的变量add中,同理,fun函数中 变量sub存放的两个数的相减值也无法传回 到main函数的变量中。下面我们修改一下 源程序,借助指针,将fun函数中运行的结 果传回到main函数中
72指针变量的定义和指 针变量的基类型 72.1指针变量的定义和指针 交量的基类型 定义指针变量的一般形式如下: 类型名指针变量名1,*指针变量名 ●●●●●● 点专此处结束放殃 4合
7.2 指针变量的定义和指 针变量的基类型 7.2.1 指针变量的定义和指针 变量的基类型 定义指针变量的一般形式如下: 类型名 *指针变量名1, *指针变量名 2,……;
例如:int*pi,*pi 以上定义语句中,p和p都是用户标 识符,表示具体的变量名,现在每个变量 名前加一星号“”说明符,用来说明所定 义的变量是指针变量。 注意:变量名前的星号“”不可省略, 若省略了星号“兴”说明符,就变成了普通 整型变量。 点专此处结束放殃 4合
例如:int *pi , *pj ; 以上定义语句中,pi和pj都是用户标 识符,表示具体的变量名,现在每个变量 名前加一星号“*”说明符,用来说明所定 义的变量是指针变量。 注意:变量名前的星号“*”不可省略, 若省略了星号“*”说明符,就变成了普通 整型变量
in是数据类型名,在这里,说明了pi 和是两个指向整型(in类型)变量的指 针,也就是说变量p和p中只能存放int类 型变量的地址,这时我们称int是指针变量 p和p的基类型。又如 double *pd i char“sl,s2; 点专此处结束放殃 4合
int是数据类型名,在这里,说明了pi 和pj是两个指向整型(int类型)变量的指 针,也就是说变量pi和pj中只能存放int类 型变量的地址,这时我们称int是指针变量 pi和pj的基类型。又如: double *pd ; char *s1 , *s2 ;