
程窃设计在线开放课程 指针 指针变量作为函数的形参 主讲:曾志华
指针 ——指针变量作为函数的形参 在线开放课程 主讲:曾志华

一.指针变量作为函数形参的必要性 C程设计 如果要在funct i on函数中要访问主函数中的n空间,如何实现? 思考1:用直接访问实现? void function() 10 n n=20: int mainO o: function(: printf"n=%d",n); return 0:
void function() { n = 20; } int main() { int n; n = 10; function(); printf(“n=%d", n); return 0; } n . . . . . . 10 如果要在function函数中要访问主函数中的n空间,如何实现? 思考1:用直接访问实现? 一.指针变量作为函数形参的必要性

1 Microsoft Visual C++-[1.cpp] 图文件B编指E查看心插入山工程巴组建B)工具D意口山帮助出 白它日®品晒色e, 吗网合】 Globals] (All global membersmain #include 圈工作区'1 void function() 白图1fi1es 编译错误!由于变量 1.cpp n=20: 有作用域,在main中 int main() 定义的变量名n只在 int n; main中有效 n=10: functionO; printf("n =%d\n",n); return 0: .Class.目FileView 1.cp2 F:\算法设计\例题程序\1\1.cpp(4):error C2065(O undeclared identifier 执行cl.exe时出错. 1.obj-1 error(s),0 warning(s)
编译错误!由于变量 有作用域,在main中 定义的变量名n只在 main中有效

1-Microsoft Visual C++-(1.cpp] 回文件D骗指E查看心插入0工程巴组建®)工具四窗口山帮助山 省|≥▣绿%色色|·≥·三网|「 [Globals] (All global membersfunction 可父川岁凿≤!国!画 刻 #include +-®1c1asse void function() A去设计例程究1八Debug11,exe int n; n=z0: n=10 int main( Press any key to continue Cint n: n=10 function函数中的 function () printf("n % 变量n与main函数中 return 0; 的n都是局部变量, ■Class..目FileView 是不同的内存空间! Configurat Compiling... Skipping.·· (no relevant changes 1.cpp 1.obj error(s),0 warning(s)
function 函 数 中 的 变量n与main函数中 的n都是局部变量, 是不同的内存空间!

二.指针变量作为函数形参的使用方法 思考2:用指针变量来实现间接访问 *pointer与n等价 void function nt *pointer) pointer=20 2000 20 n int main() int n: n=T0; 2008 2000 pointer function&n printf"n=%d",n); return 0: 运行结果:n=20
void function(int *pointer) { *pointer = 20; } int main() { int n; n = 10; function( ); printf(“n=%d", n); return 0; } n pointer 2000 2008 . . . . . . 10 2000 思考2:用指针变量来实现间接访问 20 运行结果:n=20 &n *pointer与n等价 二.指针变量作为函数形参的使用方法

三程序举例 C程设计 举例: 定义一个函数exchange3实现两个整数的交换。 要求使用指针变量作为函数的参数, 并在主函数中输出交换后的结果
三 程序举例 举例: 定义一个函数exchange实现两个整数的交换。 要求使用指针变量作为函数的参数, 并在主函数中输出交换后的结果

三.程序举例 C #include 10 a void exchange(int *x,int *y) 20 b int t: =*x,X=*y;*y=t } &a int main( { &b int a,b; a=10: b=20; exchange(&a,&b)方 printf("a=d,b=%d \n",a,b); return 0: 运行结果: a=20.b=10
10…... … 20 a b &a &b x y t #include void exchange(int *x, int *y) { int t; t=*x; x=*y; *y=t; } int main() { int a,b; a = 10; b = 20; exchange ( &a , &b ); printf("a=%d, b=%d \n", a, b) ; return 0; } 三. 程序举例 运行结果: a=20,b=10