文章目录
- [【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. 局部变量的特点
-
作用域限定 :
局部变量只能在定义它的函数或代码块中使用。它不能被函数外部的代码直接访问。
-
生命周期 :
局部变量在程序执行到包含它的函数或代码块时被创建,当函数执行结束后,它们的生命周期结束,所占用的内存空间会被释放。
-
默认值 :
局部变量在定义时不会自动初始化,因此它们的初始值是未定义的(即它们的值是随机的,取决于内存中的现有数据)。为了避免使用未初始化的局部变量,最好在声明时显式地进行初始化。
-
存储类型 :
局部变量的存储类型通常是 自动存储 (
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
在这个例子中,a
和 b
都是局部变量,它们在各自的函数中声明并使用。当 functionA()
执行完毕后,局部变量 a
会被销毁。当 functionB()
执行时,b
才被创建并使用,它们之间互不影响。
4. 关于局部变量的总结
局部变量是函数或代码块中声明的变量,具有作用域和生命周期的局限性。它们能够有效地封装函数内部的操作,避免与程序其他部分的冲突,是 C 语言程序设计中的基本组成部分。合理使用局部变量能提高程序的清晰度、可维护性,并降低错误的发生。
三 、全局变量
在 C 语言中,全局变量是指在所有函数外部声明的变量,其作用域是整个程序(即函数外部的所有部分都可以访问和修改该变量)。全局变量在程序的整个生命周期内存在,直到程序结束时才被销毁。
1. 全局变量的特点
-
作用域广泛 :
全局变量的作用域从它声明的位置开始,到整个文件的末尾(如果是多文件程序,跨文件使用时需要
extern
声明)。也就是说,全局变量可以在程序的任何地方被访问和修改(但需要注意访问权限和隐式修改的问题)。 -
生命周期长 :
全局变量的生命周期与程序的运行周期相同。从程序启动时创建,直到程序结束时销毁。因此,全局变量在整个程序运行期间都存在。
-
默认初始化值 :
如果未显式初始化,所有全局变量默认会被初始化为零(对于数字类型)或
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. 局部变量与全局变量的区别
-
作用域:
- 局部变量的作用域仅限于它所在的函数或代码块。
- 全局变量的作用域则是整个程序,除非在函数内声明为
static
(静态变量)。
-
生命周期:
- 局部变量的生命周期与函数调用相关,函数执行时创建,函数结束时销毁。
- 全局变量在程序启动时创建,在程序结束时销毁。
-
存储方式:
- 局部变量通常分配在栈区。
- 全局变量分配在数据区。
特性 | 全局变量 | 局部变量 |
---|---|---|
作用域 | 全程序(函数外部、多个文件) | 仅限于函数或代码块内部 |
生命周期 | 程序运行期间(从程序开始到结束) | 在函数执行时创建,执行完毕销毁 |
默认值 | 默认初始化为 0(对于基本数据类型) | 默认值未定义(可能是随机垃圾值) |
存储位置 | 数据段 | 栈内存 |
可见性 | 程序中所有函数都能访问 | 仅能在声明它的函数内部访问 |
内存分配 | 静态分配(常驻内存) | 动态分配(栈内存) |
结语
在 C 语言中,函数 、全局变量 和局部变量是构建程序的基本要素。它们各自具有不同的作用、特点和使用场景。以下是我对这三者的总结,帮助理解它们之间的区别、联系以及如何有效地使用它们。
- 函数是 C 语言的基本构件之一,它封装了某个任务或功能,通过函数的调用来实现代码复用,提高程序的可读性和可维护性。
- 全局变量是在所有函数外部声明的变量,它在程序的整个生命周期内存在,多个函数可以共享和修改全局变量。但过多的使用可能导致程序难以维护和调试。
- 局部变量只在特定函数或代码块内部有效,它们的生命周期仅限于函数调用时。局部变量的使用通常较为灵活,能够提高代码的模块化和可读性,是实现函数封装的重要手段。
那么我想以上这就是【C 语言篇】函数模块拼图与代码复用灯塔:C 语言编程中探索函数调用的高效征程的内容了,通过对函数 、全局变量 和局部变量 的学习,使我们可以在编程中更好的解决问题。❤️
意气风发,漫卷疏狂
学习是成长的阶梯,每一次的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中。
如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!
愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。
我是意疏 下次见!