C语言函数练习2
来源:互联网 发布:卷积神经网络 python 编辑:程序博客网 时间:2024/06/07 06:28
1.auto自动变量,函数凡未加存储类型说明的变量均为自动变量。也就是说,局部变量在默认情况下是自动变量。调用时就存在,退出时就消失。
2.register寄存器变量,当一个变量频繁永定时,必须要反复访问内存,从而耗费大量的存取时间,为此定义寄存器变量存放在CPU的寄存器中。对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量。
3.extern外部变量,当一个程序被分成两个或多个文件,分别编译它们,然后将它们连接起来,必然产生一些问题,如文件间如何共享全局变量等。一个全局变量只能说明一次,而在多个文件的程序中,会有两个或多个文件都需要访问这个全局变量。因此,必须提供一种方法通知编译器,该变量是程序的全局变量。extern存储类型正好解决此问题。它的生存期是整个程序运行的结束,作用域较大以致安全性较差。
4.static静态变量,无论是调用还是退出程序函数都存在。系统自动为其赋初始值为0,自动变量则不定。函数被告调用时,其中的静态局部变量的值将保留前次被调用的结果。
如,
#include<stdio.h>
void format();//函数原型。
void main()
{
int i;
for(i=0;i<50;i++)
{
printf("%d",i);
format();
}
}
void format()
{
static int m=0;
m++;
if(m%10==0)//用于控制每行只输出10个数据。
{
printf("/n");
}
else
{
putchar(' ');
}
}
以上,静态变量m起到了记录函数被访问次数的功能,这种功能通过自动变量无法完成。若将m前的static去掉,则无论调用多少次都不会换行的,由于m是自动变量,每次函数调用建立新m并初始化为0,所以无论调用format()函数多少次,m也不可能达到10。
5.传值调用,调用函数的实参用表达式值,被调用函数的形参用变量名。在调用时,系统将实参拷贝一个副本给形参,使形参与实参具有相同的值,形参变动时实际是变量实参传给它的副本,而实参根本没有改变过。参数个数一样,并且实参类型与形参类型相同。
如,
#include<stdio.h>
void increment(int ,int );
void main()
{
int num1,num2;
printf("/n 请输入两个数:");
scanf("%d %d",&num1,&num2);
printf("/n 递增前的值是:%d和%d/n",num1,num2);
increment(num1,num2);
printf("/n 递增后的值是:%d和%d/n",num1,num2);
}
void increment(int value1,int value2)
{
value1++;
value2++;
printf("/n 子函数中值是:%d和%d/n",value1,value2);
}
输出结果:
请输入两个数:25 48
递增前的值是:25和48
子函数中值是:26和49
递增后的值是:25和48
6.引用调用,调用函数的实参使用地址值,被调用函数的形参要求是指针,参数个数一样,且实参类型与形参类型相同。将实参传给形参时,是把实参的地址给形参,让形参直接指向实参。传址方式在时间和空间的开销上都将减少,因此可以提高运行效率。
如,
#include<stdio.h> 输出结果:
void increment(int *,int *);
void main()
{
int num1,num2;
printf("/n 请输入两个数:");
scanf("%d %d",&num1,&num2);
printf("/n 递增前的值是:%d和%d/n",num1,num2);
increment(&num1,&num2);
printf("/n 递增后的值是:%d和%d/n",num1,num2);
}
void increment(int *ptr1,int *ptr2)
{
(*ptr1)++;
(*ptr2)++;
printf("/n 子函数中值是:%d和%d/n",*ptr1,*ptr2);
}
请输入两个数:25 48
递增前的值是:25和48
子函数中值是:26和49
递增后的值是:26和49
7.数组作为参数来传递信息。
#include<stdio.h>
#define N 5
void sort(float a[]);
void main()
{
float grade[N];
int i;
printf("/n 输入%d个学员的成绩:/n",N);
for(i=0;i<N;i++)
{
scanf("%f",&grade[i]);
}
sort(grade);
printf("/n 排序后的成绩为:/n");
for(i=0;i<N;i++)
{
printf("%5.2f ",grade[i]);
}
printf("/n");
}
void sort(float a[N])
{
int i,j;
float temp;
for(i=0;i<N;i++)
{
for(j=0;j<N-1-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
}
8.通过函数实现求5个数中的最大值。
#include<stdio.h>
int find_larg(int *);
void main()
{
int array[5];
int i,larg_num;
printf("/n 输入5个整数:/n");
for(i=0;i<=4;i++)
{
scanf("%d",&array[i]);
}
larg_num=find_larg(array);
printf("/n 最大的数是:%d/n",larg_num);
}
int find_larg(int *ptr)
{
int larg=*ptr;
int i;
ptr++;
for(i=1;i<=4;i++)
{
if(larg<*ptr)
{
larg=*ptr;
}
ptr++;
}
return larg;
}
- C语言函数练习2
- c语言函数练习
- C语言编程(练习2:函数 )
- C语言函数练习1
- C语言函数编程练习
- C语言实战练习:函数
- c语言练习2
- C语言练习(2)
- C语言练习2
- C语言中的exit()函数练习
- C语言编程(练习1:函数 )
- C语言编程(练习3:函数 )
- C语言编程(练习4:函数 )
- C语言练习篇-8函数指针练习
- C语言数组练习2
- C语言指针练习2
- C语言结构练习2
- C语言小练习 2
- 描叙符
- 解决错误"不能添加其键已在使用中的实体"
- 使用Forms Authentication 身份验证 之 Basic Knowledge
- java.util.Random学习
- 用批处理写的:数据库备份还原工具
- C语言函数练习2
- google 的cookies
- 搞笑1
- 在Delphi 7 中用Indy开发Socket应用程序
- 非常有用以及常用乃至必用的PHP工具
- linux环境下轻松搭建CVS服务器
- 优秀ASP.NET程序员修炼之路
- 数据库链接总结
- c:import 标记传值