文章目录
【C语言篇】函数模块拼图与代码复用灯塔:C 语言编程中探索函数调用的高效征程前言一 、创建和使用函数1. 创建函数2. 调用函数 二 、局部变量1. 局部变量的特点2. 局部变量的初始化3. 局部变量的生命周期4. 关于局部变量的总结 三 、全局变量1. 全局变量的特点2. 全局变量的声明与使用3. 关于全局变量总结4. 局部变量与全局变量的区别 结语
【C语言篇】函数模块拼图与代码复用灯塔:C 语言编程中探索函数调用的高效征程
?欢迎交流:在学习过程中如果你有任何疑问或想法,欢迎在评论区留言,我们可以共同探讨学习的内容。你的支持是我持续创作的动力!
?点赞、收藏与推荐:如果你觉得这篇文章对你有所帮助,请不要忘记点赞、收藏,并分享给更多的小伙伴!你们的鼓励是我不断进步的源泉!
?推广给更多人:如果你认为这篇文章对你有帮助,欢迎分享给更多对Linux感兴趣的朋友,让我们一起进步,共同提升!
前言
在 C 语言里,函数是具有特定功能的代码片段,能被重复调用,还能接收参数,也可以返回一个值。它作为结构化编程的关键部分,让程序员可以把复杂的大问题拆分成若干小问题,并用一个个函数分别解决,如此一来,代码的可读性变强,也更易于维护和重复使用.
本文我们来介绍函数的创建与使用、以及局部变量与全局变量
一 、创建和使用函数
1. 创建函数
首先我们来看看如何创建一个函数,创建一个函数是很简单的,格式如下:
返回值类型 函数名称([函数参数…]);
如果我们的函数只需要完成任务,不需要告诉我们结果,返回值类型可以写成void表示为空。
2. 调用函数
函数名(参数值) 这里的括号其实是表示函数调用,即使我们没有参数 也需要() 下面来展示一下函数的创建与调用方法#include <stdio.h>void cheer()//定义函数 返回类型是void表示无返回值{ printf("Hello World!\n");}int main(){ cheer();//调用函数return 0;}
输出结果:
Hello World!
这里需要注意的是没有参数也需要() 不然就会报错。
函数名(参数值) 这里的括号其实是表示函数调用,即使我们没有参数 也需要() 如果有参数,则需要给出正确的数量和顺序这些值会被按顺序依次用来初始化函数中的参数下面我再来展示一个关于函数的代码
#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;}
输出结果:
1到10的和为5520到30的和为27540到50的和为495
二 、局部变量
现在我们已经了解了如何创建和调用函数,在继续学习后续内容之前,我们需要先认识一下全局变量和局部变量这两个概念
1. 局部变量的特点
作用域限定:
局部变量只能在定义它的函数或代码块中使用。它不能被函数外部的代码直接访问。
生命周期:
局部变量在程序执行到包含它的函数或代码块时被创建,当函数执行结束后,它们的生命周期结束,所占用的内存空间会被释放。
默认值:
局部变量在定义时不会自动初始化,因此它们的初始值是未定义的(即它们的值是随机的,取决于内存中的现有数据)。为了避免使用未初始化的局部变量,最好在声明时显式地进行初始化。
存储类型:
局部变量的存储类型通常是 自动存储(auto
),意味着它们的生命周期仅限于函数调用时的栈内存中。可以通过 auto
关键字显式指定,尽管通常会省略,因为默认就是 auto
。
在其他函数中,无法使用main函数中的变量,因为局部变量的作用域是有限的,比如位于某个函数内部的变量,那么它的作用域就是整个函数内部,而在其他位置均无法访问。比如我们之前学习的for循环,当我们这样定义时:
#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;}
输出结果:
012345678915
在 C 语言中,局部变量是指在函数内部声明并使用的变量。局部变量的作用域仅限于它所在的函数或代码块(如循环、条件语句等),在函数或代码块外部无法访问或使用。局部变量在函数调用时被创建,并在函数执行完毕时销毁。
2. 局部变量的初始化
局部变量在声明时最好进行初始化,以确保它们不会保存任何垃圾值。可以直接在声明时赋值:
int a = 10; // 局部变量 a 初始化为 10
如果没有初始化,局部变量的值将是随机的,可能导致程序出现错误。
3. 局部变量的生命周期
下面是一个简单示例,演示了局部变量在不同函数中的作用域和生命周期。
#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;}
输出结果:
In functionA, a = 10In functionB, b = 20
在这个例子中,a
和 b
都是局部变量,它们在各自的函数中声明并使用。当 functionA()
执行完毕后,局部变量 a
会被销毁。当 functionB()
执行时,b
才被创建并使用,它们之间互不影响。
4. 关于局部变量的总结
局部变量是函数或代码块中声明的变量,具有作用域和生命周期的局限性。它们能够有效地封装函数内部的操作,避免与程序其他部分的冲突,是 C 语言程序设计中的基本组成部分。合理使用局部变量能提高程序的清晰度、可维护性,并降低错误的发生。
三 、全局变量
在 C 语言中,全局变量是指在所有函数外部声明的变量,其作用域是整个程序(即函数外部的所有部分都可以访问和修改该变量)。全局变量在程序的整个生命周期内存在,直到程序结束时才被销毁。
1. 全局变量的特点
作用域广泛:
全局变量的作用域从它声明的位置开始,到整个文件的末尾(如果是多文件程序,跨文件使用时需要 extern
声明)。也就是说,全局变量可以在程序的任何地方被访问和修改(但需要注意访问权限和隐式修改的问题)。
生命周期长:
全局变量的生命周期与程序的运行周期相同。从程序启动时创建,直到程序结束时销毁。因此,全局变量在整个程序运行期间都存在。
默认初始化值:
如果未显式初始化,所有全局变量默认会被初始化为零(对于数字类型)或 NULL
(对于指针类型)。
2. 全局变量的声明与使用
全局变量是在所有函数外部声明的,它的声明语法如下:
#include <stdio.h>void test();int a = 10; //我们可以直接将变量定义放在外面,这样所有的函数都可以访问了int main() { a += 10; test();//调用函数 printf("%d", a);}void test(){ a += 10;}
输出结果
30
3. 关于全局变量总结
全局变量在 C 语言中是程序中跨函数共享数据的主要方式。它们具有较长的生命周期,并在程序的整个执行过程中可用。尽管全局变量提供了方便的数据共享方式,但过度使用全局变量可能会导致代码的可维护性和可读性降低,因此需要谨慎使用。在可能的情况下,尽量使用局部变量或通过参数传递的方式来替代全局变量,以减少代码之间的耦合。
4. 局部变量与全局变量的区别
作用域:
局部变量的作用域仅限于它所在的函数或代码块。全局变量的作用域则是整个程序,除非在函数内声明为static
(静态变量)。 生命周期:
局部变量的生命周期与函数调用相关,函数执行时创建,函数结束时销毁。全局变量在程序启动时创建,在程序结束时销毁。存储方式:
局部变量通常分配在栈区。全局变量分配在数据区。特性 | 全局变量 | 局部变量 |
---|---|---|
作用域 | 全程序(函数外部、多个文件) | 仅限于函数或代码块内部 |
生命周期 | 程序运行期间(从程序开始到结束) | 在函数执行时创建,执行完毕销毁 |
默认值 | 默认初始化为 0(对于基本数据类型) | 默认值未定义(可能是随机垃圾值) |
存储位置 | 数据段 | 栈内存 |
可见性 | 程序中所有函数都能访问 | 仅能在声明它的函数内部访问 |
内存分配 | 静态分配(常驻内存) | 动态分配(栈内存) |
结语
在 C 语言中,函数、全局变量和局部变量是构建程序的基本要素。它们各自具有不同的作用、特点和使用场景。以下是我对这三者的总结,帮助理解它们之间的区别、联系以及如何有效地使用它们。
函数是 C 语言的基本构件之一,它封装了某个任务或功能,通过函数的调用来实现代码复用,提高程序的可读性和可维护性。全局变量是在所有函数外部声明的变量,它在程序的整个生命周期内存在,多个函数可以共享和修改全局变量。但过多的使用可能导致程序难以维护和调试。局部变量只在特定函数或代码块内部有效,它们的生命周期仅限于函数调用时。局部变量的使用通常较为灵活,能够提高代码的模块化和可读性,是实现函数封装的重要手段。那么我想以上这就是【C 语言篇】函数模块拼图与代码复用灯塔:C 语言编程中探索函数调用的高效征程的内容了,通过对函数、全局变量和局部变量的学习,使我们可以在编程中更好的解决问题。❤️
意气风发,漫卷疏狂
学习是成长的阶梯,每一次的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中。
如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!
愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。
我是意疏 下次见!