文档章节

学点 C 语言(31): 函数 - 声明、定义、调用

涂孟超
 涂孟超
发布于 2014/09/26 15:32
字数 601
阅读 13
收藏 0

1. 如果函数没有声明, 应该在调用前定义:
#include <stdio.h>

/* 定义求大值函数 */
int MAX(int x, int y) {
    if (x > y)
        return x;
    else
        return y;
} 

/* 定义求小值函数 */
int MIN(int x, int y) {
    return x < y ? x : y;
} 

int main(void)
{
    int a = 5;
    int b = 6;

    /* 调用函数 */
    printf("%d\n", MAX(a,b));
    printf("%d\n", MIN(a,b));   
        
    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

2. 可以在函数头声明:
#include <stdio.h>

int main(void)
{
    int a = 5;
    int b = 6;

    /* 在函数头声明要使用的函数 */
    int MAX(int x, int y);
    int MIN(int x, int y);
    
    /* 调用函数 */
    printf("%d\n", MAX(a,b));
    printf("%d\n", MIN(a,b));   
        
    getchar();
    return 0;
}

/* 定义求大值函数 */
int MAX(int x, int y) {
    if (x > y)
        return x;
    else
        return y;
} 

/* 定义求小值函数 */
int MIN(int x, int y) {
    return x < y ? x : y;
} 

 
 
 
 
 

 

 

  

3. 但一般应在文件头声明:

函数原型的声明在实际运用中, 会集中声明在头文件(*.h)里面.
#include <stdio.h>

/* 在文件头声明要使用的函数 */
int MAX(int x, int y);
int MIN(int x, int y);
    
int main(void)
{
    int a = 5;
    int b = 6;

    /* 调用函数 */
    printf("%d\n", MAX(a,b));
    printf("%d\n", MIN(a,b));   
        
    getchar();
    return 0;
}

/* 定义求大值函数 */
int MAX(int x, int y) {
    if (x > y)
        return x;
    else
        return y;
} 

/* 定义求小值函数 */
int MIN(int x, int y) {
    return x < y ? x : y;
} 

 
 
 
 
 

 

 

  

4. 函数可互调用, 但不能嵌套:
#include <stdio.h>

void PrintSum(int x, int y);
int sum(int x, int y);
    
int main(void)
{
    PrintSum(1,2);  
    PrintSum(111,222); 
    
    getchar();
    return 0;
}

void PrintSum(int x, int y) {
    printf("%d + %d = %d;", x, y, sum(x,y));
    putchar('\n');
}

int sum(int x, int y) {
    return x + y;
} 

 
 
 
 
 

 

 

  

5. 关于无参数、无返回值的函数:

如果函数没有参数, 最好是 fun(void), 不过 fun() 也行;
如果函数没有返回值, 要注明返回类型是 void;
在 C 语言中调用无参函数也要带括号.
#include <stdio.h>

void prn(void);

int main(void)
{
    prn();  /* 调用无参函数 */
    
    getchar();
    return 0;
}

void prn(void) {
    printf("ok\n");
}

 
 
 
 
 

 

 

  

6. 声明函数时可以省略形参:
#include <stdio.h>

int sum(int, int, int); /* 省略形式参数 */

int main(void)
{
    printf("%d\n", sum(1,2,3));
    
    getchar();
    return 0;
}

int sum(int x, int y, int z)
{
    return(x + y + z);
}

 
 
 
 
 

 

 

  

7. 函数的参数一般不要超过 7 个:

但 C99 可以支持到 127 个参数.
#include <stdio.h>

int sum(int, int, int, int, int, int, int);

int main(void)
{
    printf("%d\n", sum(1,2,3,4,5,6,7));
    
    getchar();
    return 0;
}

int sum(int a, int b, int c, int d, int e, int f, int g)
{
    return(a + b + c + d + e + f + g);
}

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/12/02/1345452.html

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
C语言编程学习:C程序解析:用C语言编写你的第一个自定义函数

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/05/26
0
0
防止变量重复定义、头文件重复包含、嵌套包含

#include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码: #include "x.h" #include "x.h" 显然,这里文件x.h被包含了两次,没有人会故意编写这样的代...

Matrix4X4
2012/08/08
659
1
The C Programming Language笔记

1.作者大量的使用"类似于Fortran语言中的子程序和函数"这样的类比,问题是还要去看Fortran开发语言么,亲! 2.printf函数并不是C语言本身的一部分,printf仅仅标准库函数中一个有用的函数而已...

枫TI
2016/12/27
18
0
为React Native开发写的JS和React入门知识

前言 想来想去,还是需要写一篇文章来介绍下JavaScript和React的基本知识。最初开发ReactNative的时候,完全没接触过React,大学那会简单学了点JS。毕业后一直在某五百强外企上班。做的东西也...

北方人在上海
2016/08/29
90
0
期末复习之C语言编程基础知识梳理

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/03/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis缓存NoSQL

redis的应用场景有哪些 1、会话缓存(最常用) 2、消息队列,比如支付 3、活动排行榜或计数 4、发布、订阅消息(消息通知) 5、商品列表、评论列表等

BobwithB
12分钟前
2
0
「绘画技巧」一分钟画出动漫人物的喜怒哀乐中“喜”的各种表情

「绘画技巧」一分钟画出动漫人物的喜怒哀乐中“喜”的各种表情 表情拥有着可以凸显动漫人物情绪和主张的魔力,表情渲染整个环境。那么今天来和大家一起分享自己整理收集动漫人物喜怒哀乐中的...

知北
16分钟前
3
0
从流中的三种求和方式谈起

//使用reduce()方法int reduce = Arrays.asList(ins).stream().reduce(0, Integer::sum);//Collectors类的工厂方法,收集器int collect1 = Arrays.asList(ins).stream().collect(Colle......

我的眼里只有眼屎
17分钟前
2
0
File类的使用(文件与文件夹,获取,判断存在,删除,)

//File类的使用 public static void main(String[] args) throws IOException, ClassNotFoundException { //test3();// File f = new File("E:\\资料\\第二阶段\\d......

zhengzhixiang
20分钟前
2
0
58到家MySQL军规升级版

转载 2018-03-30 58到家DBA 架构师之路 一、基础规范 表存储引擎必须使用InnoDB 表字符集默认使用utf8,必要时候使用utf8mb4 解读: 通用,无乱码风险,汉字3字节,英文1字节 utf8...

xiaolyuh
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部