A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hanxujie 中级黑马   /  2015-7-13 15:39  /  1232 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

第一部分:函数的定义

1.什么情况下定义函数:添加一个常用的新功能

2.函数的定义格式
返回值类型  函数名(形式参数列表)
{
    函数体
}

3.定义函数需要明确的东西
   起一个有意义的函数名


第二部分:函数的参数和返回值



#include <stdio.h>
/*
参数注意点
1.形式参数:定义函数时函数名后面中的参数,简称形参
2.实际参数:调用函数式传入的具体数据,简称实参
3.实参个数必须等于形参个数
4.函数体内部不能定义和形参一样的变量
5.如果是基本数据类型作为函数形参,纯粹是值传递,修改函数内部形参的值,并不会影响外面实参的值
6.一个函数可以没有形参,也可以有无限多个形参
*/

// 形式参数,简称形参
int sum(int num1, int num2)
{
    // 函数体内部不能定义和形参一样的变量
    // int num1;

    num1 = 50;

    return num1 + num2;
}

/*
return的作用:
1> 退出函数
2> 返回一个具体值给函数调用者

返回值注意点
1> void代表没有返回值
2> 如果没有明确说明返回值类型,默认是返回int类型
3> 就算明确声明了返回值类型,也可以不返回任何值

默认情况下,C语言不允许两个函数的名称一样
*/

char test()
{
    return 'A';
}

/*
void test(int a, int b)
{

}*/

void test5()
{

}

/* 伪代码
void login(QQ, 密码)
{
    // 1.验证QQ有没有值
    if (QQ没有值) return;

    // 2.验证密码有没有值
    if (密码没有值) return;

    // 3.把QQ、密码发送到服务器

}*/

int test3()
{
    printf("999999999\n");
}

// 如果不明确声明返回值类型,默认就是int类型
test2()
{
    printf("888888888\n");
    return 10;
}

int main()
{
    int c = test2();
    printf("c=%d\n", c);

    test3();
    //test();

    /*
    int a = 100;
    int b = 27;

    // a、b称为函数的实际参数,简称实参
    int c = sum(a, b);


    printf("a=%d, b=%d, c=%d\n", a, b, c);*/

    return 0;
}



第三部分: 函数的特别注意



1.默认情况下,不允许有函数的名称一样
2.函数不能嵌套定义
3.函数不能重复定义,但是可以重复声明
4.如果有函数的声明,没有函数的定义
1> 编译可以通过,因为编译器只会检测语法合不合理,并不会检测函数有没有定义
2> 链接报错,因为链接的时候会检测函数是否定义

第四部分: 多文件开发的特别注意


1.函数的定义放.c文件,函数的声明放.h文件
2.如果要使用某个.c文件中定义的函数,只需要#include这个.c文件对应的.h文件
3..h文件的作用:被别人拷贝。编译链接的时候不需要管.h文件
4.cc xx.o xxx.o 将多个目标文件链接在一起
  cc xx.c xxx.c 将多个源文件编译、链接


注:
include
1> 作用:拷贝右边文件的所有内容到#include所在的位置
2> 自定义的文件用"",系统自带的文件用<>
3> #include <stdio.h>的目的:拷贝printf函数的声明


11 个回复

倒序浏览
看了,感觉挺详细
回复 使用道具 举报
给楼主点赞
回复 使用道具 举报
同意楼上,点赞+1
回复 使用道具 举报
很全面,隔两天来看一遍,巩固巩固
回复 使用道具 举报
总结的 很细致
回复 使用道具 举报
不错呦。。。。
回复 使用道具 举报
不错,加油
回复 使用道具 举报
很详细,给你32个赞
回复 使用道具 举报
总结的好到位啊
回复 使用道具 举报
总记得还不错,可以学习一下
回复 使用道具 举报
哎呦,不错呦!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马