实验9-3 函数的形参为指针变量
来源:互联网 发布:新东方考研网络课程 编辑:程序博客网 时间:2024/06/11 09:35
实验目的:
理解地址传递的特点,掌握指针为形参时的用法。
实验步骤:
1.分析求两个整数和的函数。
1.1程序如下:
#include<stdio.h>
int add(int x,int y)
{
int z;
z = x + y;
return z;
}
void main( )
{
inta = 23, b = -5;
intc;
c= add(a, b);
printf("%d + %d = %d\n",a, b, c);
}
分析:
如图1所示,C语言中函数调用最重要的特点是 。
图1 函数的传值调用
1.2程序如下:
#include<stdio.h>
int add(int *x,int *y)
{
int z;
z = *x + *y;
return z;
}
void main( )
{
inta = 23, b = -5;
intc;
c= add( , );
printf("%d + %d = %d\n",a, b, c);
}
分析:
1)把程序补充完整。使用函数调用add(a, b)可以吗?为什么?
2)使用函数调用add(&a, &b)可以吗?为什么?假设此时变量a和b的地址分别为0x0012ff7c和0x0012ff78,把图2补充完整。
图2 函数的传值调用
指针变量x的内容为变量a的地址,也就是说指针变量x指向了变量a,使用*x也可以访问变量a所标识的存储单元了。
3)为什么可以在add函数中使用main函数中的变量a?
答:这个问题有问题!add函数中不可以使用变量a,在add函数中只是使用了变量a所标识的存储单元!只要存储单元归程序所有就可以通过指针使用它!
2.分析下面的程序。
#include <stdio.h>
void change(float *pf)
{
*pf= 5.23;
}
void main( )
{
floatfa = 2.3;
printf("%f\n", fa);
change(&fa);
printf("%f\n", fa);
}
分析:
change函数为何可以改变main函数中局部变量fa的值?
3.根据指针做参数的特点,改写add函数使其返回值为void,其首部为void add(int x, int y, int *pSum)。
1)改写后的函数如何使用?
2)与实验7-5中的add函数相比有何差异?
3)C语言中所有的函数都可以没有返回值吗?
4.scanf函数为何可以改变“实参”的值?
4.1当用户输入23回车时,下面的程序有何输出?
#include<stdio.h>
void main( )
{
int i, *pi = &i;
scanf("%d", pi);
printf("%d,%d\n", i, *pi);
}
4.2分析下面的程序。
#include <stdio.h>
char buffer[100] = "23\n";
void scanInt(int *p)
{
intvalue = 0;
inti = 0;
while(buffer[i]!= '\n')
{
value= value * 10 + (buffer[i] - '0');
++i;
}
*p= value;
}
void main( )
{
inti;
scanInt(&i);
printf("%d\n",i);
}- 实验9-3 函数的形参为指针变量
- 实验9-4 函数的返回值为指针变量
- 实验9-5 指针变量的运算
- 指针变量与函数指针形参
- C++程序设计实验报告(二十)---实现冒泡排序算法,并将之定义为一个函数,其中参数是指向数组的指针变量
- 指向函数的指针变量
- 指针变量函数的例子
- 指向函数的指针变量
- 指向函数的指针变量
- 指针函数的局部变量
- 返回指针变量的函数
- 函数指针,指针函数,返回值为指针的函数
- 实验: 函数指针作为函数入参
- 对于 函数的形参含有指针 的情况,要判断该指针是否为NULL
- 实参和形参指针做函数参数时,如何改变main函数变量的值
- 为含指针变量的类声明一个拷贝构造函数和一个赋值操作符
- 10.5函数的指针和指向函数的指针变量
- 函数指针,函数变量
- Cookie和Session的区别
- 实验9-2 空指针
- AlertDialog.Builder发生:android.view.WindowManager$BadTokenException: Unable to add window
- 学过C语言了?那么你知道位段为何物啊?
- css/div做的连续的几个div水平浮动(float)时,当左右浮动的时候怎么当浏览器的窗口缩小的时候浮动的就往下跑了
- 实验9-3 函数的形参为指针变量
- 方向
- java 三层架构 实现数据的显示和分页功能
- 通过修改注册表 改变VC6界面字体
- 建造者模式
- wstring类型字符标准输出
- topcoder 插件安装
- Oracle如何删除重复数据
- ServletConfig与ServletContext的区别与联系