• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言函数语法详解

C语言函数语法详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c语言函数语法大全,c语言函数详解,c语言函数,c语言函数大全,c语言绝对值函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1、概述

        在C语言中,函数是来完成子程序或者某个模块的功能。有主程序或者其他函数调用,其他函数之间可以相互调用。同一函数可以被一个或多个函数任意次调用。
注意:
    a、一个C程序有一个或多个程序模块组成,每一个程序模块作为一个源程序文件。一个源文件可以为多个C程序共用。
    b、程序在编译时是以源文件为单位进行编译,而不是以函数为单位进行编译。一个源文件就是一个编译单元
    c、C程序的执行是从main函数开始,也是在main函数中结束整个程序
    d、所有函数是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一个函数,即函数不能嵌套定义。函数之间可以相互调用,但不能调用main函数。main函数是系统调用的。
    e、从用户使用角度看,函数分为两种:
        (1)标准函数。标准函数即函数库,它由系统提供。不同的C语言编译系统提供的标准函数的数量和功能或有不同,但是基本函数是一样的。
        (2)用户自定义函数。
    f、从函数形式看,函数分为两种:
        (1)有参函数。
        (2)无参函数。在调用函数时,主调函数通过参数向被调函数传递数据

2、函数的定义

定义无参函数的一般形式:
类型表示符 函数名()
{
    声明部分
    语句部分
}
【实】定义无参函数,输出“Hello World”字符串

void show()
{
    printf("Hello World");
}
</div>

定义有参函数的一般形式:
类型标识符 函数名(形式参数列表)
{
    声明部分
    语句部分
}
【例】传递两个int的参数a和b,然后计算a加b的和,然后返回a加b的和。

int add(int a, int b)
{
    int t = 0; // 声明部分
    t = a + b;
    return t;
}
</div>

空函数就是没有函数体的函数,如:

void test(){ ... }

调用空函数时,什么工作也不做,没有任何实际作用。在程序设计中往往程序初期只实现基本功能,对于高级功能我们可以提供一空函数,以后实现该空函数。

定义函数时指定的参数称为“形参”,调用函数时传递的参数称为“实参”。
    a、在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时,函数中的形参才被分配内存单元。在调用结束后,形参所占用的内存单元也被释放。
    b、实参可以是常量、变量或表达式,如:max(3, a+b);
    c、在被定义的函数中,必须指定形参的类型
    d、实参和形参的类型应相同或赋值兼容。
    e、在C语言中,实参向形参数据传递是“值传递”,单向传递,只由实参传递给形参,而形参不能传递给实参。在内存中形参和实参是不同的内存单元。因此,改变形参的值不会影响实参的值。

3、函数的返回值

    通常,希望通过函数调用是主调函数能得到一个确定的值,这就是函数的返回值。
    a、函数的返回值是通过函数中的return语句获得的。return语句将被调用函数中的一个确定值带回主调函数中去。如果需要从被调用函数带回一个函数值,被调函数中必须包含return语句。如果不需要从被调函数带回函数值可以不需要return语句。一个函数可以有多个return语句,执行到哪个return语句,哪个语句就起作用。
    b、函数值的类型。既然函数有返回值,这个值当然应属于某一个确定的类型,应当在定义函数时指定函数值的类型。C语言中,凡是不加类型说明的函数,自动按整型处理。在Turbo C 2.0中不写返回类型可以通过,Turbo C++ 3.0编译时不能通过。所以建议读者在定义时对所有函数都指定函数类型。
    c、在定义函数是指定的类型应该与return返回类型一致。如果函数值的类型和return语句中表达式值类型不一致,则按照函数类型为准。
    d、对于不带回值的函数,应当用“void”定义函数为“无类型”或称“空类型”。此时函数体中不得出现return语句。

4、函数调用
    函数调用的一般形式为:函数名(实参列表);如:

int a = max(2, 4);
</div>

按函数在程序中出现的位置来分,可以有以下3种函数调用方式:
    a、函数语句。把函数调用作为一个语句。此时不许要函数返回值。如: show();
    b、函数表达式。函数出现在一个表达式中,这种表达式称为函数表达式,需要函数返回一个确定的值。如:a = 2*max(a, b);
    c、函数参数。函数调用作为一个函数的参数。如:m = max(a, max(b, c));

5、对被调函数的声明和函数原型

    在一个函数中调用另一个函数需要具备以下条件:
    a、被调函数必须是已经存在的函数
    b、如果使用函数库,还应该在文本文件开头用#include命令将调用有关库函数时所需用到的信息“包含”到本文件中来。如:#include <stdio.h>
        其中“stdio.h”是一个“头文件”。在stdio.h文件中包含了输入输出库函数所用到的一些宏定义信息。如果不包含stdio.h文件的信息,就无法使用输入输出库中的函数。
    c、如果使用用户自己定义的函数,而该函数的位置在调用它的函数的后面(在同一个文件中),应该在主调函数中对被调用的函数进行声明。如:

#include <stdio.h>
void main()
{
    float add(float x, float y); // 或者: float add(float, float);
    float a, b, c;
    scanf("%f%f", &a, &b);
    c = add(a, b);
    printf("sum is %f\n", c);
}
float add(float x, float y)
{
    return x + y;
}
</div>

6、局部变量和全局变量

a、局部变量
        在一个函数内部定义的变量是内部变量,它只能在函数范围内才有效,也就是说只在本函数内才能使用它们,在此函数外部不能使用这些变量。如:

float f1(int a)
{
    int b, c;     // b、c变量只在f1函数内部有效
}
char f2(int x, int y)
{
    int i, j;     // i、j变量在f2函数内部有效
}
void main()
{
    int m, n;  // m、n变量在main函数中有效
}
</div>

注意:
    1)主函数中定义的变量(m、n)也只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其他函数中定义的变量。
    2)不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。
    3)形式参数也是局部变量。
    4)在一个函数内部可以在符合语句中定义变量,这些变量值在本符合语句中有效,这种符合语句称为“分程序”或“

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言函数语法详解

相关文章

  • 2017-05-28Linux中使用C语言的fork()函数创建子进程的实例教程
  • 2017-05-28C++ 模拟实现list(迭代器)实现代码
  • 2017-05-28C语言栈顺序结构实现代码
  • 2017-05-28解析如何利用switch语句进行字符统计
  • 2017-05-28C++类中的static和const用法实例教程
  • 2017-05-28浅谈CMake配置OpenCV 时静态链接与动态链接的选择
  • 2017-05-28C++调试追踪class成员变量的方法
  • 2017-05-28详解C++中的增量运算符++和减量运算符--的用法
  • 2017-05-28基于C语言字符串函数的一些使用心得
  • 2017-05-28深入探讨Linux静态库与动态库的详解(一看就懂)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 使用WindowsAPI实现播放PCM音频的方法
    • C++ 成员变量的初始化顺序问题详解
    • 深入理解约瑟夫环的数学优化方法
    • C 语言插入排序算法及实例代码
    • 详解C++中的指针、数组指针与函数指针
    • 浅谈socket TCP编程中connect的一些坑
    • C++入门概览和尝试创建第一个C++程序
    • 解析C++中多层派生时的构造函数及一些特殊形式
    • C语言自增(++)和自减(--)
    • 深入理解C++的动态绑定与静态绑定的应用详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有