【C 语言篇】函数模块拼图与代码复用灯塔:C 语言编程中探索函数调用的高效征程

文章目录

  • [【C语言篇】函数模块拼图与代码复用灯塔:C 语言编程中探索函数调用的高效征程](#【C语言篇】函数模块拼图与代码复用灯塔:C 语言编程中探索函数调用的高效征程)
  • 前言
    • [一 、创建和使用函数](#一 、创建和使用函数)
        • [1. 创建函数](#1. 创建函数)
        • [2. 调用函数](#2. 调用函数)
    • [二 、局部变量](#二 、局部变量)
        • [1. 局部变量的特点](#1. 局部变量的特点)
        • [2. 局部变量的初始化](#2. 局部变量的初始化)
        • [3. 局部变量的生命周期](#3. 局部变量的生命周期)
        • [4. 关于局部变量的总结](#4. 关于局部变量的总结)
    • [三 、全局变量](#三 、全局变量)
        • [1. 全局变量的特点](#1. 全局变量的特点)
        • [2. 全局变量的声明与使用](#2. 全局变量的声明与使用)
        • [3. 关于全局变量总结](#3. 关于全局变量总结)
        • [4. 局部变量与全局变量的区别](#4. 局部变量与全局变量的区别)
  • 结语

【C语言篇】函数模块拼图与代码复用灯塔:C 语言编程中探索函数调用的高效征程

💬欢迎交流:在学习过程中如果你有任何疑问或想法,欢迎在评论区留言,我们可以共同探讨学习的内容。你的支持是我持续创作的动力!
👍点赞、收藏与推荐:如果你觉得这篇文章对你有所帮助,请不要忘记点赞、收藏,并分享给更多的小伙伴!你们的鼓励是我不断进步的源泉!
🚀推广给更多人:如果你认为这篇文章对你有帮助,欢迎分享给更多对Linux感兴趣的朋友,让我们一起进步,共同提升!

前言

在 C 语言里,函数是具有特定功能的代码片段,能被重复调用,还能接收参数,也可以返回一个值。它作为结构化编程的关键部分,让程序员可以把复杂的大问题拆分成若干小问题,并用一个个函数分别解决,如此一来,代码的可读性变强,也更易于维护和重复使用.
本文我们来介绍函数的创建与使用、以及局部变量与全局变量

一 、创建和使用函数

1. 创建函数

首先我们来看看如何创建一个函数,创建一个函数是很简单的,格式如下:
返回值类型 函数名称([函数参数...]);

如果我们的函数只需要完成任务,不需要告诉我们结果,返回值类型可以写成void表示为空。

2. 调用函数
  • 函数名(参数值)
    • 这里的括号其实是表示函数调用,即使我们没有参数 也需要()
  • 下面来展示一下函数的创建与调用方法
c 复制代码
#include <stdio.h>
void cheer()//定义函数  返回类型是void表示无返回值
{
    printf("Hello World!\n");
}

int main(){
    cheer();//调用函数
return 0;
}

输出结果:

c 复制代码
 Hello World!

这里需要注意的是没有参数也需要() 不然就会报错。

  • 函数名(参数值)
    • 这里的括号其实是表示函数调用,即使我们没有参数 也需要()
  • 如果有参数,则需要给出正确的数量和顺序
  • 这些值会被按顺序依次用来初始化函数中的参数

下面我再来展示一个关于函数的代码

c 复制代码
#include <stdio.h>
void sum(int begin, int end)//之所以把sum()写在上面 是因为编译器会自上而下分析代码
{
    int i;
    int sum = 0;
    for (i = begin; i <= end; i++)
    {
        sum += i;
    }
    printf("%d到%d的和为%d\n", begin, end, sum);
}
int main()
{
    sum(1, 10);//把值交给上面参数表里面的参数
    sum(20, 30);
    sum(40, 50);

    return 0;
}


输出结果:

c 复制代码
1到10的和为55
20到30的和为275
40到50的和为495

二 、局部变量

现在我们已经了解了如何创建和调用函数,在继续学习后续内容之前,我们需要先认识一下全局变量和局部变量这两个概念

1. 局部变量的特点
  1. 作用域限定

    局部变量只能在定义它的函数或代码块中使用。它不能被函数外部的代码直接访问。

  2. 生命周期

    局部变量在程序执行到包含它的函数或代码块时被创建,当函数执行结束后,它们的生命周期结束,所占用的内存空间会被释放。

  3. 默认值

    局部变量在定义时不会自动初始化,因此它们的初始值是未定义的(即它们的值是随机的,取决于内存中的现有数据)。为了避免使用未初始化的局部变量,最好在声明时显式地进行初始化。

  4. 存储类型

    局部变量的存储类型通常是 自动存储auto),意味着它们的生命周期仅限于函数调用时的栈内存中。可以通过 auto 关键字显式指定,尽管通常会省略,因为默认就是 auto

在其他函数中,无法使用main函数中的变量,因为局部变量的作用域是有限的,比如位于某个函数内部的变量,那么它的作用域就是整个函数内部,而在其他位置均无法访问。比如我们之前学习的for循环,当我们这样定义时:

c 复制代码
#include <stdio.h>
int main() {
    int i;//如果定义在函数中 那么整个函数可以使用
    for (i = 0; i < 10; i++) 
    {
        printf("%d\n", i);//在内部正常使用i
    }
    i += 5; //在外部能使用i
    printf("%d\n", i);//在外部能使用i
    return 0;
}

输出结果:

c 复制代码
0
1
2
3
4
5
6
7
8
9
15

在 C 语言中,局部变量是指在函数内部声明并使用的变量。局部变量的作用域仅限于它所在的函数或代码块(如循环、条件语句等),在函数或代码块外部无法访问或使用。局部变量在函数调用时被创建,并在函数执行完毕时销毁。

2. 局部变量的初始化

局部变量在声明时最好进行初始化,以确保它们不会保存任何垃圾值。可以直接在声明时赋值:

c 复制代码
int a = 10;  // 局部变量 a 初始化为 10

如果没有初始化,局部变量的值将是随机的,可能导致程序出现错误。

3. 局部变量的生命周期

下面是一个简单示例,演示了局部变量在不同函数中的作用域和生命周期。

c 复制代码
#include <stdio.h>

void functionA() {
    int a = 10;  // 局部变量 a
    printf("In functionA, a = %d\n", a);
}

void functionB() {
    int b = 20;  // 局部变量 b
    printf("In functionB, b = %d\n", b);
}

int main() {
    functionA();  // 调用 functionA,a 变量生命周期结束
    functionB();  // 调用 functionB,b 变量生命周期结束
    return 0;
}

输出结果:

c 复制代码
In functionA, a = 10
In functionB, b = 20

在这个例子中,ab 都是局部变量,它们在各自的函数中声明并使用。当 functionA() 执行完毕后,局部变量 a 会被销毁。当 functionB() 执行时,b 才被创建并使用,它们之间互不影响。

4. 关于局部变量的总结

局部变量是函数或代码块中声明的变量,具有作用域和生命周期的局限性。它们能够有效地封装函数内部的操作,避免与程序其他部分的冲突,是 C 语言程序设计中的基本组成部分。合理使用局部变量能提高程序的清晰度、可维护性,并降低错误的发生。

三 、全局变量

在 C 语言中,全局变量是指在所有函数外部声明的变量,其作用域是整个程序(即函数外部的所有部分都可以访问和修改该变量)。全局变量在程序的整个生命周期内存在,直到程序结束时才被销毁。

1. 全局变量的特点
  1. 作用域广泛

    全局变量的作用域从它声明的位置开始,到整个文件的末尾(如果是多文件程序,跨文件使用时需要 extern 声明)。也就是说,全局变量可以在程序的任何地方被访问和修改(但需要注意访问权限和隐式修改的问题)。

  2. 生命周期长

    全局变量的生命周期与程序的运行周期相同。从程序启动时创建,直到程序结束时销毁。因此,全局变量在整个程序运行期间都存在。

  3. 默认初始化值

    如果未显式初始化,所有全局变量默认会被初始化为零(对于数字类型)或 NULL(对于指针类型)。

2. 全局变量的声明与使用

全局变量是在所有函数外部声明的,它的声明语法如下:

c 复制代码
#include <stdio.h>
void test();

int a = 10;   //我们可以直接将变量定义放在外面,这样所有的函数都可以访问了

int main() 
{
    a += 10;
    test();//调用函数
    printf("%d", a);
}
void test()
{
    a += 10;
}

输出结果

c 复制代码
30
3. 关于全局变量总结

全局变量在 C 语言中是程序中跨函数共享数据的主要方式。它们具有较长的生命周期,并在程序的整个执行过程中可用。尽管全局变量提供了方便的数据共享方式,但过度使用全局变量可能会导致代码的可维护性和可读性降低,因此需要谨慎使用。在可能的情况下,尽量使用局部变量或通过参数传递的方式来替代全局变量,以减少代码之间的耦合。

4. 局部变量与全局变量的区别
  1. 作用域

    • 局部变量的作用域仅限于它所在的函数或代码块。
    • 全局变量的作用域则是整个程序,除非在函数内声明为 static(静态变量)。
  2. 生命周期

    • 局部变量的生命周期与函数调用相关,函数执行时创建,函数结束时销毁。
    • 全局变量在程序启动时创建,在程序结束时销毁。
  3. 存储方式

    • 局部变量通常分配在栈区。
    • 全局变量分配在数据区。
特性 全局变量 局部变量
作用域 全程序(函数外部、多个文件) 仅限于函数或代码块内部
生命周期 程序运行期间(从程序开始到结束) 在函数执行时创建,执行完毕销毁
默认值 默认初始化为 0(对于基本数据类型) 默认值未定义(可能是随机垃圾值)
存储位置 数据段 栈内存
可见性 程序中所有函数都能访问 仅能在声明它的函数内部访问
内存分配 静态分配(常驻内存) 动态分配(栈内存)

结语

在 C 语言中,函数全局变量局部变量是构建程序的基本要素。它们各自具有不同的作用、特点和使用场景。以下是我对这三者的总结,帮助理解它们之间的区别、联系以及如何有效地使用它们。

  • 函数是 C 语言的基本构件之一,它封装了某个任务或功能,通过函数的调用来实现代码复用,提高程序的可读性和可维护性。
  • 全局变量是在所有函数外部声明的变量,它在程序的整个生命周期内存在,多个函数可以共享和修改全局变量。但过多的使用可能导致程序难以维护和调试。
  • 局部变量只在特定函数或代码块内部有效,它们的生命周期仅限于函数调用时。局部变量的使用通常较为灵活,能够提高代码的模块化和可读性,是实现函数封装的重要手段。

那么我想以上这就是【C 语言篇】函数模块拼图与代码复用灯塔:C 语言编程中探索函数调用的高效征程的内容了,通过对函数全局变量局部变量 的学习,使我们可以在编程中更好的解决问题。❤️


意气风发,漫卷疏狂
学习是成长的阶梯,每一次的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中。
如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!

愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。
我是意疏 下次见!

相关推荐
ThetaarSofVenice2 分钟前
【Java从入门到放弃 之 通用容器类】
java·开发语言·python
小汤猿人类5 分钟前
Mybatisplus教学
java·开发语言
新知图书9 分钟前
R语言的数据结构-数组
开发语言·数据结构·r语言
暂时先用这个名字32 分钟前
PHP开发日志 ━━ 基础知识:四种不同的变量返回方式该如何调用
android·开发语言·缓存·php·框架·变量·数组
Dyan_csdn33 分钟前
【JAVA项目】基于ssm的【二手车交易系统】
java·开发语言
IT 小舟33 分钟前
Java:基于SSM的高校食堂系统
java·开发语言
向宇it36 分钟前
【从零开始入门unity游戏开发之——C#篇08】逻辑运算符、位运算符
开发语言·前端·vscode·unity·c#·游戏引擎
Heisenberg~37 分钟前
C++ string常用接口的说明
开发语言·c++
星河梦瑾1 小时前
CTF知识集-PHP特性
android·开发语言·php
ac-er88881 小时前
如何使用PHP和phpSpider搭建强大的爬虫系统
开发语言·php