黑马程序员——C语言——函数

主要讲述了函数的定义,使用、形参、实参以及返回值等内容。

一、函数。

一个程序包括一个或者多个程序段(小程序),每个程序段都有自己的功能,我们一般称这些程序段为“函数”

二、函数的定义

1、定义函数

① 定义函数名;   ②定义函数体;

2、 定义函数的格式

返回值类型  函数名(形式参数列表)

{

函数体

}

代码举例

1 //定义一个函数,计算两个整数的和
2 int sum(int a, int b)
3 {
4     int c = a + b;
5 }

三、函数的参数

1、形式参数:定义函数时函数名后面中的参数,简称形参

2、实际参数:调用函数式传入的具体数据,简称实参

3、实参个数必须等于形参个数

4、函数体内部不能定义和形参一样的变量

5、如果是基本数据类型作为函数形参,纯粹是值传递,修改函数内部形参的值,并不会影响外面实参的值

6、一个函数可以没有形参,也可以有无限多个形参

 1 //代码举例
 2 // 形式参数,简称形参
 3 int sum(int num1, int num2)
 4 {
 5     // 函数体内部不能定义和形参一样的变量
 6     // int num1;
 7
 8     num1 = 50;
 9
10     return num1 + num2;
11 }

四、 函数的返回值

1、return的作用:

①  退出函数

②  返回一个具体值给函数调用者

2、返回值注意点

① void代表没有返回值

② 如果没有明确说明返回值类型,默认是返回int类型

③ 就算明确声明了返回值类型,也可以不返回任何值

 1 //代码举例
 2 //返回字符型
 3 char test()
 4 {
 5     return ‘A‘;
 6 }
 7 //void没有返回值
 8
 9 void test5()
10 {
11
12 }
13 //返回int型数据
14 int test3()
15 {
16     printf("返回int型\n");
17 }
18
19 // 如果不明确声明返回值类型,默认就是int类型
20 test2()
21 {
22     printf("默认int型\n");
23     return 10;
24 }

五、函数的易错点

1、默认情况下,不允许有函数的名称一样

2、函数不能嵌套定义

3、函数不能重复定义,但是可以重复声明

4、如果有函数的声明,没有函数的定义

① 编译可以通过,因为编译器只会检测语法合不合理,并不会检测函数有没有定义

②  链接报错,因为链接的时候会检测函数是否定义

1 //代码举例
2 // 函数的声明
3 void printLine();
4 // 函数的定义
5
6 void printLine()
7 {
8     printf("--------\n");
9 }

六、 include的简单用法

1、 作用:拷贝右边文件的所有内容到#include所在的位置

2、 自定义的文件用"",系统自带的文件用<>

3、 #include <stdio.h>的目的:拷贝printf函数的声明

 1 //代码举例
 2 #include <stdio.h>
 3
 4 int main()
 5 {
 6     printf("include的使用方法\n");
 7
 8 //#include "gaizuojia/first.txt"
 9 #include "/Users/gaizuojia/Desktop/代码/include/gaizuojia/first.txt"
10     return 0;
11 }

七、多文件的开发

(一) 好处:

1、利于团队合作

2、方便阅读

3、 多人修改,效率更高

(二)用法:

1.函数的定义放.c文件,函数的声明放.h文件

2.如果要使用某个.c文件中定义的函数,只需要#include这个.c文件对应的.h文件

3.h文件的作用:被别人拷贝。编译链接的时候不需要管.h文件

//代码举例
//主函数的编写
#include <stdio.h>
#include "divided.h"

int main()
{
    int score1 = 100;
    int score2 = 70;

    int c = average(score1, score2);
    int d = sum(score1, score2);

    printf("平均分是%d\n", c);
    printf("总分是%d\n", d);

    printf("e=%d\n", e);

    return 0;
}
 1 //代码举例
 2 //divided的.c文件(基本运算)
 3 int average(int a, int b)
 4 {
 5     return (a + b)/2;
 6 }
 7
 8 int sum(int a, int b)
 9 {
10     return a + b;
11 }
12
13 int minus(int a, int b)
14 {
15     return a - b;
16 }
17
18 int multiply(int a, int b)
19 {
20     return a * b;
21 }
1 //代码举例
2 //divided的.h头文件(基本运算函数的声明)
3 int average(int a, int b);
4 int sum(int a, int b);
5 int minus(int a, int b);
6 int multiply(int a, int b);
时间: 2024-12-20 22:00:22

黑马程序员——C语言——函数的相关文章

黑马程序员—C语言函数的学习

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 第一讲  函数的参数问题以及返回值 在定义函数的参数时要注意以下几点: 1.形式参数:定义函数时函数名后面中的参数,简称形参 2.实际参数:调用函数时传入的具体数据,简称实参 3.实参个数必须等于形参个数 4.如果是基本数据类型作为函数的形参,纯粹是值传递,修改函数内部形参的值,并不会影响外面实参的值 5.一个函数可以没有形参,也可以有无数个 下面通过一个具体的例子来看一下函数的具体使用以及参

黑马程序员——c语言学习心得——函数传递二维数组

黑马程序员——c语言学习心得——函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.   变量定义的时候给变量初始化,这是保证不出错的一个很好的习惯.尤其是在指针的使用上,如果我们没有给指针初始化,就会出现野指针,该指针的指向并不是我们所希望的,一旦错误的释放了这个指针,就会发生内存的访问.那么如何初始化指针变量呢,一般有以下几种方法:   1.初始化空指针   int* pInteger=N

黑马程序员_C语言总结-基础部分

C语言基础 1.C语言的关键字 1>关键字就是C语言提供的有特殊含义的符号,也称为保留字,C语言中一共有32个关键字,这些关键字都有自己的含义 例如:int double float if  else switch for 等等 2.标示符的概念: 1>标示符就是在程序中自定义的一些名称,比如函数名,变量名,结构体名等等这些都是标示符 2>命名规则: 1>只能由英文字母的大小写和数字以及_下划线组成,且首字母必须为字母或者下划线_ 2>在C语言中是严格区分大小写的,比如if是

黑马程序员-c语言变量作用域问题

c语言中的变量作用域总结 不管什么语言,main好像总是程序的入口,大括号是它的内容:变量的作用域总是困扰着我们,接下来,我们循序渐进的搞明白c语言中的变量作用域,首先得知道c是弱类型的语言,弱类型表现在很多方面: 1:你可以直接在程序中写一个常量,然后一个分号:1: 2:在定义函数时,void型的函数可以return:int型的可以不用写返回值. ---还有很多 下面我们一步一步开始:首先在main中定义的变量当然作用于整个main函数了 1:在main中定义变量 #include<stdio

黑马程序员——c语言学习心得—— 指针

黑马程序员——c语言学习心得—— 指针 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,打开文件fopen(文件名,打开方式);例如:FILE *fp = fopen("a1","r");  返回的是文件的指针(文件在内存缓冲区的首地址)fopen函数反回值 是指向 a1文件的指针,通常赋值给一个指针变量关于文件名a1 也可以是一个“路径+文件名”   c:\abc.txt----------------

黑马程序员——c语言学习心得—— 电影购票系统

黑马程序员——c语言学习心得——  电影购票系统 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,基础信息类 #import <Foundation/Foundation.h> #import "Cinema.h" void buyMovieTicket(){ //购买电影票 //调用 电影院的类的 buyTicket的方法 //                  [[Cinema alloc] init]; C

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性

黑马程序员——c语言学习心得——位运算符a

黑马程序员——c语言学习心得——位运算符 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h>void func(int n, char  str[ ][5] ){int i;for(i = 0; i < n; i++)  printf("/nstr[%d] = %s/n"

【黑马程序员】————scanf函数

变量的内存分析 1.内存寻址由大到小,优先分配内存地址比较大的字节给变量 2.变量越先定义,内存地址就越大 3.取得变量的地址:&变量名 4.输出地址:%p 5.一个变量一定先进行初始化,才能使用 查看内存地址: int a;printf("a的地址是:%p\n", &a); scanf函数 1.      简介 这也是在stdio.h中声明的一个函数,因此使用前必须加入#include <stdio.h>.调用scanf函数时,需要传入变量的地址作为参数,