找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

575

积分

0

好友

76

主题
发表于 昨天 07:17 | 查看: 8| 回复: 0
学习打卡
学习内容: C语言基础
学习自评: 优秀
学习方式: 图书 
Demo:  

屏幕上输出了一行字符“Hello World”。透过这段简单的代码,我们可以梳理出C语言的一些核心语法概念。

#include <stdio.h>

int main()
{
    printf("Hello World\n");
    return 0;
}

一、主函数 main

int
main() // 这是主函数
{
    return 0; // 主函数返回值
}

main 意为“主要的”,在C语言中特指主函数。双斜杠 // 后面的内容是注释,用于解释代码逻辑,编译器会忽略注释,因此注释不会影响程序的运行。

二、函数的构成

在编程中,函数可以看作一个具备特定功能的“黑盒”:

  1. 输入:执行时可接收外部传入的值。
  2. 执行:在内部进行一系列操作。
  3. 输出:执行完成后可以返回一个值。

其标准写法如下:

函数返回值类型 函数名(函数输入参数值)
{
    // 执行具体的操作
    return 函数返回值;
}

被花括号 {} 包裹的部分称为函数体,这是函数执行逻辑的所在。花括号上方的函数名、参数及返回值类型共同构成函数头

例如,int 指明了函数的返回值类型为整型(integer 的缩写)。例如,实现一个两数相加的函数 add

int add(int a, int b)
{
    int result = a + b;
    return result;
}

三、主函数:程序的唯一入口

主函数 main 是整个C语言程序的唯一入口。程序启动后,首先执行的就是 main 函数,然后才能通过它调用其他函数(如上面定义的 add 函数)。

这意味着一个完整的C语言程序中,有且只能有一个 main 函数。以下是一个调用示例:

#include <stdio.h>

int add(int a, int b)
{
    int result = a + b;
    return result;
}

int main()
{
    int sum = add(2, 3); // 调用add函数,传入参数2和3
    printf("2 + 3 = %d\n", sum);
    return 0;
}

注意:调用函数时,传入参数的数量和类型应尽量与函数定义一致。如果类型不同,编译器会尝试自动类型转换,若转换失败则会导致编译错误。

Q1: 主函数由谁调用?返回值必须是 int 吗? A1:主函数在程序启动时由系统自动调用,无需在代码中显式调用。其返回值会返回给启动该程序的上级进程(如操作系统)。根据C语言标准,主函数必须有返回值,且类型应为 int。通常,程序正常结束时返回 0

四、函数调用:先声明,后使用

编译器按从上到下的顺序阅读代码。因此,若要调用一个函数,必须先让编译器“认识”它。

正确顺序(先定义,后调用):

// 1. 编译器先看到add函数的定义
int add(int a, int b)
{
    return a + b;
}

int main()
{
    // 2. 此时编译器已知add,调用成功
    int s = add(2, 3);
    return 0;
}

Q2: 如果顺序反过来(先调用,后定义)会怎样? A2:编译器在遇到 add(2, 3) 时,会因无法识别 add 而产生“未定义的标识符”类错误,并停止编译。这涉及到代码在编译阶段的符号解析过程。

同理,变量也必须遵循“先声明,后使用”的原则,否则编译会报错。

int main()
{
    int a = 5;     // 先声明变量a
    int b = 10;    // 先声明变量b
    int result;    // 先声明变量result

    result = a + b; // 然后再使用
    printf("%d\n", result);
    return 0;
}

理解这些基础语法和编译器的“阅读”顺序,是编写正确C语言程序、高效排查语法错误的第一步。




上一篇:PCIe DMA读写机制详解:从SG DMA到Block DMA的实战指南
下一篇:Breach论坛数据查询平台详解:网络安全研究与信息验证工具
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-10 21:04 , Processed in 0.093817 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表