内容正文:
第8章指针
8.1指针的基本概念
8.2指针变量的定义、初始化、引用
8.3指针运算
8.4指针与数组
8.6指针与函数
8.5指针与字符串
8.7指针数组
大学C/C++语言程序设计程序设计 第8章 指针
1-12章幻灯片45分钟 13-27章45分钟
函数调用时,实参与形参之间参数传递方式分为哪几种?
8.6 指针与函数
单向值传递
双向地址传递
大学C/C++语言程序设计程序设计 第8章 指针
指针变量作为函数参数——双向地址传递
特点:指针变量作为函数的参数,实参与形参之间是地址传递,即把实参指针赋给形参。
此时,实参与形参之间传递的是调用函数中某个变量(或全局变量)的地址。实参与形参指向同一个变量,因此可在被调函数中通过形参指针间接访问调用函数中的变量。
大学C/C++语言程序设计程序设计 第8章 指针
? int *p;
如果p作为函数fun参数之一,另一参数可以是什么数据类型呢?
1、某个整型变量的地址 如:int a ; fun(&a)
2、一维数组
如:int s [4]; fun(s)
3 一级指针
如:int *q; fun(q)
一级指针作为函数参数
大学C/C++语言程序设计程序设计 第8章 指针
void swap(int *p1,int *p2)
{ int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void main()
{ int a=6,b=10;
printf("a=%d,b=%d
",a,b);
swap(&a,&b);
printf("a=%d,b=%d
",a,b);
}
指针函数例1: 编写函数,利用指针交换2个整数的值.
形参为指针
实参为变量地址
大学C/C++语言程序设计程序设计 第8章 指针
void swap(int *p1,int *p2)
{ int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void main()
{ int a=6,b=10;
printf("a=%d,b=%d
",a,b);
swap(&a,&b);
printf("a=%d,b=%d
",a,b);
}
6
10
a:
b:
调用前:
调用结束:
10
6
a:
b:
通过形参指针p1,p2间接访问main函数中的变量a和b,执行swap函数后使*p1和*p2的值交换,也就是a和b的值互换;
&a
6
p1
a
&b
10
p2
b
temp
调用开始
&a
10
p1
a
&b
6
p2
b
调用中
6
temp
运行结果:
a=6,b=10
a=10,b=6
大学C/C++语言程序设计程序设计 第8章 指针
void swap(int *p1,int *p2)
{ int *p;
p=p1;
p1=p2;
p2=p;
}
void main()
{ int a=6,b=10;
printf("a=%d,b=%d
",a,b);
printf("a=%d,b=%d
",a,b);
}
a=6,b=10
a=6,b=10
进入swap函数调用时,形参p1指向a,p2指向b;交换后p1指向b,p2指向a。调用后返回,a和b的值没有变化。
所以要改变a,b的值,要使用*p1,*p2的形式
分析下列程序:
大学C/C++语言程序设计程序设计 第8章 指针