C语言函数的运用及调用
绵阳网站建设公司创新互联,绵阳网站设计制作,有大型网站制作公司丰富经验。已为绵阳上千余家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的绵阳做网站的公司定做!
1.当程序变得越来越复杂的时候,我们可以使用函数进行完成任务,并不再是进行编写。
2.C语言本身就具有丰富的库函数:
目录路径函数
字符类型分类函数
内存管理函数
数学函数
进程控制函数
日期和时间函数
接口函数
输入输出函数
图形函数
诊断函数
3.每一种函数都有它的作用,在需要使用时,直接进行调用就可以了。
4.函数分为有参和无参函数。
参数可以分为形参与实参。
形参在函数内,而实参在函数外。
形参直接使用,而实参在函数外调用。
5. 函数的值只能通过return语句返回主调函数。
6.在函数内有局部变量和全局变量两种,局部变量在函数内使用,而全局变量可在函数中使用。
7.从变量作用域可以划分全局,而在变量的生存期可以分为静态与动态存储方式。
固定的存储空间与运行时分配的存储空间方式还是有所不同的。
auto声明自动变量,自动变量用关键字作存储类别的声明,在函数调用结束将会自动释放这些存储空间。
static可以声明局部变量,在函数调用结束之后不消失而保留原值。
8.register可以声明局部变量,在函数调用时为了提高效率,可以寄存在CPU的寄存器中。
extern可以声明局部变量,扩展程序文件中的作用域。
关于c语言中函数调用问题解答如下:
首先如果是编译的这个代码那这个函数肯定被调用了,让你觉得没有调用是因为while循环没有被执行。
图中红色框内代码p1和p2经过赋值p1是肯定大于p2所以不满足while.的条件直接退出了函数。
你需要看看要实现啥在改一下。
C语言调用函数就是先定义并声明函数,之后再根据定义函数的格式调用。
下面举例来说明函数调用方法:
#include
int fun(int x, int y); // 函数声明,如果函数写在被调用处之前,可以不用声明
void main()
{
int a=1, b=2, c;
c = fun(a, b); // 函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值
}
// 自定义函数fun
int fun(int x, int y) // 函数首部
{ // {}中的语言为函数体
return xy ? x : y; // 返回x和y中较大的一个数
}
如何调用C语言写的库,如a.lib等,有对应的库头文件a.h。假设a.h中定义了函数:
int
WhyCoding(int
a,
float
b);
做法是,
/*
cpp_a.h
*/
extern
"C"
{
#include
"a.h"
}
或
/*
cpp_a.h
*/
extern
"C"
{
int
WhyCoding(int
a,
float
b);
/*
重定义所有的C函数
*/
}
从上面可以看出,extern
"C"
是用在C和C++之间的桥梁。之所以需要这个桥梁是因为C编译器编译函数时不带
函数的类型信息,只包含函数符号名字,如C编译器把函数int
a(float
x)编译成类似_a这样的符号,C连接器只要
找到了调用函数的符号,就可以连接成功,它假设参数类型信息是正确的,这是C编译连接器的缺点。而C++
编译器为了实现函数重载,编译时会带上函数的类型信息,如他把上面的a函数可能编译成_a_float这样的
符号为了实现重载,注意它还是没有带返回值得信息,这也是为什么C++不支持采用函数返回值来区别函数
重载的原因之一,当然,函数的使用者对函数返回值的处理方式(如忽略)也是重要原因。
基于以上,C调用C++,首先需要用封装函数把对C++的类等的调用封装成C函数以便C调用,于是extern
"C"
的
作用是:让编译器知道这件事,然后以C语言的方式编译和连接封装函数.(通常是把封装函数用C++编译器按C++
方式编译,用了extern
"C"
后,编译器便依C的方式编译封装接口,当然接口函数里面的C++语法还是按C++方式
编译;对于C语言部分--调用者,还是按C语言编译;分别对C++接口部分和C部分编译后,再连接就可以实现C
调用C++了).
相反,C++调用C函数,extern
"C"
的作用是:让C++连接器找调用函数的符号时采用C的方式,即使用_a而不是
_a_float来找调用函数。
分类: 电脑/网络 程序设计 其他编程语言
问题描述:
我想让用户按“1”就进入一的功能,按“2”就进入二的功能——
可我写的里面有好多错误~~请大家帮忙~~~
谢谢!!!
阿城工作室软件合集.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include "math.h"
#include "stdio.h"
TextIQ();
Count();
TaxCompute();
int main()
{
int choose;
printf("\n请选择一个菜单选项:\n");
printf (" 1--测测你的智商\n");菜单选项
printf (" 2--北京大兴庞各庄瓜类销售合算工具\n");
printf (" 9--版权声明\n ");
printf (" 0--离开\n");
printf (" 请选择:");
scanf("%d", choose);选择
if (1==choose)判断选择
TextIQ ();
if (2==choose)
Count ();
if (9==choose)
printf("版权由阿城工作室所有\n未经允许不得拷贝本程序\n");
if (0==choose)
printf("谢谢使用!\nBye Bye!\n");
else
printf("请重新选择一个菜单选项\n");
return 0;
}
/****************************************************\
模块名称:
测测你的智商
摘要:
本模块是我的第一个C语言作业,请多指教。
其它说明:
本模块使用了一些简单函数
模块历史:
姜城于2006年10月12日创建本模块
\****************************************************/
void TextIQ()
{
char d;
printf(" 测测你的智商\n\n");
printf(" 阿城工作室\n\n\n");
printf(" 想把梦变成现实,第一步应该干什么?\n\n\n");
printf(" A.起床 B.努力工作\n\n");
printf("请输入您的答案 ");
scanf("%c",d);/*输入答案*/
if(d=='a'||'A')
printf(" 恭喜你答对了!^-^ ");/*答a*/
else printf(" 很遗憾,你答错了! #_# ");/*答b*/
return ;
}
/****************************************************\
模块名称:
北京大兴庞各庄瓜类销售合算工具
摘要:
本模块是我的第二个C语言作业,请多指教。
其它说明:
本模块从实际出发,实现了简单功能。
模块历史:
姜城于2006年10月17日创建本模块
\****************************************************/
Count()
{
float a,b,c,d,e,f;
printf(" 欢迎进入北京大兴庞各庄瓜类销售合算工具\n\n");
printf(" 阿城工作室\n\n\n");
printf(" 请输入您所购买的不同瓜类的重量(斤)\n\n");/*输入购买数值*/
printf(" 京秀(5.0/斤)");
scanf("%f",a);
printf(" 新秀(5.5/斤)");
scanf("%f",b);
printf(" 白色冰淇淋(4.7/斤)");
scanf("%f",c);
printf(" 台湾无子(6.1/斤)");
scanf("%f",d);
printf(" 新红宝(3.2/斤)");
scanf("%f",e);
f=5.0*a+5.5*b+4.7*c+6.1*d+3.2*e;/*计算总额*/
printf("\n\n\n");
printf(" 您的消费总额为%f元\n\n",f);/*显示总额*/
return 0;/*如果结果为XXX.XX就好了*/
}
解析:
你可以用switch语句呀
1、值传递,创建变量x和y,x的值等于a的值,y的值等于b的值
void Exchg1(int x, int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf(“x=%d,y=%d/n”,x,y)
}
void main()
{
int a=4,b=6;
Exchg1 (a,b) ;
printf(“a=%d,b=%d/n”,a,b)
}
2、地址传递,相当于建立了px和py两个指向整型的指针,其值分别为a和b的地址
Exchg2(int *px, int *py)
{
int tmp=*px;
*px=*py;
*py=tmp;
print(“*px=%d,*py=%d/n”,*px,*py);
}
main()
{
int a=4;
int b=6;
Exchg2(a,b);
Print(“a=%d,b=%d/n”, a, b);
}
3、引用传递,x和y直接引用a和b,对a和b操作,相当于给a、b起了别名x、y
Exchg2(int x, int y)
{
int tmp=x;
x=y;
y=tmp;
print(“x=%d,y=%d/n”,x,y);
}
main()
{
int a=4;
int b=6;
Exchg2(a,b);
Print(“a=%d,b=%d/n”, a, b);
}
扩展资料:
printf用法:
printf()函数的调用格式为:printf("lt;格式化字符串gt;",lt;参量表gt;)。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
比如:
int a=1234;
printf("a=%d\n",a);
输出结果为a=1234。