本文介绍: C 语言没有类似于publicprivate这样的访问修饰符变量作用域在 C 语言中非常重要,它定义变量的可见性和生命周期局部变量仅在声明它们的函数或块中有效,而全局变量在整个程序中都有效。静态变量具有特殊生命周期作用域特性。在这个代码实例中,sum用来累加正数的一个局部变量。在 C 和 C++ 中,变量名函数名都是标识符,它们可以同名,但只要它们的作用域重叠,就不会有冲突。这段代码没有函数名为sum,因此不会发生重名冲突。希望这些解释能够帮助你更好理解这些概念

写在最前面

一位粉丝私信交流,回想起了当初的我C语言一题写一下午的,而且很多概念糊糊的不清楚。借助这次机会,整理相关 C 语言中最常见而关键的疑惑,并对概念进行解答。

本篇博客的前身:
【新手解答1】深入探索 C 语言:变量名、形参 + 主调函数、被调函数 + 类和对象 + 源文件(.c 文件)、头文件(.h 文件)+ 库
【新手解答2】深入探索 C 语言:变量名、变量 + 函数声明 vs 函数定义 + main的声明 + 头文件和源文件的关系
【新手解答3】深入探索 C 语言:头文件提供必要的接口、源文件保持实现细节的私有性 + 进一步学习的方向 + 如何快速编写程序并最终能制作小游戏
【新手解答4】深入探索 C 语言:全局变量声明、全局函数声明 + 宏定义
新手解答5】深入探索 C 语言:宏中的文本标识符和字符串 + 递归运算条件语句循环 + switch-case 与多项条件和枚举的差别
新手解答6】深入探索 C 语言算法流程图条件判断循环)+ 字符常量 + switch的具体用法 + 关于namespace + import vs include

如有不对的地方欢迎指出!好久没接触C了hh

问题一:代码缩进

新手解答6】深入探索 C 语言算法流程图(条件判断、循环)+ 字符常量 + switch的具体用法 + 关于namespace + import vs include提到的实例中,这每行之前的空格又有什么讲究呢?
发现int main后面,跟的代码块必须与main平齐,而这个显然是空了四格,那有没有什么普遍点的规律?

switch (expression) {
    case value1:
        // 代码块
        break;
    case value2:
        // 代码块
        break;
    // 更多 cases...
    default:
        // 默认代码块
}

问题二:C语言中的变量作用

对了,C语言中的前缀指的是public那类的吗?还有可否细说一下变量作用域?

在 C 语言中,“前缀” 并不像在一些其他语言(如 Java 或 C#)中那样指代访问修饰符(如 publicprivate 等)。C 语言作为一种过程编程语言,并没有内置类和访问修饰符概念
在 C 语言中,提到的“前缀”通常是指变量或函数名之前的一段标识文本用于区分不同模块库中的同名变量或函数。

变量作用

在 C 语言中,变量作用域决定了在哪个部分的代码中可以访问变量。主要有两种类型的作用域:

  1. 局部作用域

    void function() {
        int localVar = 5; // 局部变量,仅在 function 内部可见
    }
    
  2. 全局作用域

    int globalVar = 10; // 全局变量,整个程序中都可见
    
    void function() {
        globalVar = 15; // 可以访问和修改全局变量
    }
    

静态变量

静态变量(使用 static 关键字声明)是一种特殊类型的变量,它结合局部变量全局变量的某些特性:

总结

问题三:变量名和函数名重名

sum好像是数组求和的函数吧,但这里应用好像并不符合它的调用条件啊
哦,对了sum还有对一组数值求和的操作的意思
等等,这个sum可能是变量?但是这样的话……变量和函数名都是标识符,会不会重名什么的?

实例:计算数组中正数的总和
假设我们有一个整数数组我们想计算数组中所有正数的总和

#include <stdio.h&gt;

int main() {
    int numbers[] = { -1, 3, 4, -5, 9, -2 };
    int sum = 0;

    for (int i = 0; i < sizeof(numbers) / sizeof(numbers[0]); i++) {
        if (numbers[i] &gt; 0) {
            sum += numbers[i];
        }
    }

    printf("Sum of positive numbers: %dn", sum);
    return 0;
}

相关解析

新手解答6】深入探索 C 语言:算法流程图(条件判断、循环)+ 字符常量 + switch的具体用法 + 关于namespace + import vs include提到的实例中,sum 实际上是一个变量的名字,而不是函数名。它被用来累加数组中的正数,最终存储正数的总和

变量 sum

在这段代码中,sum初始化为 0。然后通过 for 循环遍历数组 numbers,每当遇到一个正数时,就将这个数加到 sum 上。这个过程中,sum 变量累积了数组中所有正数的总和。

C 语言中,sum 并不是一个内置的函数名或保留字

标准的 C 语言中,sum 并不是一个内置的函数名或保留字。C 语言标准库中没有名为 sum 的函数。如果你在 C 代码中看到 sum,它很可能程序员自定义的一个变量名或者函数名。

C 语言标准库提供了一系列的函数,但都是围绕字符串处理数学计算输入输出时间日期处理功能。对于求和这样的操作,通常需要程序员自己实现

例如,在这个的代码示例中,sum 被用作一个变量名用于累加数组中的正数。这是程序员定义的变量,而不是 C 语言的内置函数。在 C 中,执行求和操作通常需要通过循环或递归方法手动计算

变量名和函数名重名?

在 C 和 C++ 中,变量名和函数名都是标识符。确实有可能出现重名的情况,但在函数和变量的作用域不重叠的情况下,这通常不是问题

在这个代码示例中,sum 是一个局部变量,只在 main 函数内部有意义。除非你在同一个作用域内定义了一个名为 sum 的函数,否则不会有重名的问题

总结

在这个代码实例中,sum用来累加正数的一个局部变量。在 C 和 C++ 中,变量名和函数名都是标识符,它们可以同名,但只要它们的作用域不重叠,就不会有冲突。这段代码没有函数名为 sum,因此不会发生重名冲突


希望这些解释能够帮助你更好理解这些概念。如果还有疑问,欢迎继续提问交流

原文地址:https://blog.csdn.net/wtyuong/article/details/134718046

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_35314.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注