news 2026/8/31 6:13:26

对于C语言的初始理解和困境(混沌期)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
对于C语言的初始理解和困境(混沌期)

示例

#include<stdio.h>intmain(){printf("hello world\n");return0;}

这是我打出的第一个程序,也可以说每个初学者都会进行的最简单的代码,但要是只会跟着敲代码,是永远都学不会编程的,需要理解自己打的每个字都代表着什么意思。

C语言大致是分为四个步骤
源代码{(.c)文件}预处理编译汇编(.s)目标文件(.o)链接可执行程序
首先我们需要解释一些名词才能更好的理解代码
声明
在代码里调用printf之前,编译器必须先 “认识” 它 —— 知道它存在长什么样(返回值、参数)。这种 “提前告知存在与签名” 的东西,就叫声明。就类似于考试前登记姓名核验身份一样。(在学习的时候我一直以为声明是给“printf”赋予打印的命令或者在执行命令时告诉编译器“printf”是打印命令,在之后问了ai才知道是错的)

int printf(const char *format, ...); // 这就是一条声明 │ │ │ │ │ └── 参数:接收一个格式字符串(以及可变参数) │ └───────────── 函数名:叫 printf └────────────────── 返回值:int 这段声明传达的信息是:**" 存在一个函数叫 printf,它接收一个 `const char*` 格式串,返回 `int`。"**

它没有告诉编译器 “printf 是打印用的”,更没有 “printf 是打印命令” 这种语义 ——“printf 用来打印” 是你(程序员)知道的用途,不是声明传达的信息。编译器只关心 “存在、叫什么、参数返回值是什么” 这些机械特征,好让它检查你调用得对不对。

<stdio.h>是什么

<stdio.h>是一个头文件也是函数库,里面装着很多函数的声明(包括 printf、scanf、putchar 等)。它不是 “一项声明”,而是声明们的集合。而“声明们”就是指(printf、scanf、putchar等)函数的集合。C语言库函数

#include <stdio.h>的作用

预处理阶段,把stdio.h里的那一堆声明复制插入#include这一行所在的位置,让编译器能看到这些声明。
声明只告诉编译器 “printf 存在、入参、返回类型”,既不说它用来打印,也不包含真正打印的指令。printf 真正打印到屏幕的代码在标准库(libc)里,由编译流程最后一步链接接入。

int函数
int是一种返回函数且返回的是整数``

intmain(){// ...做一些事...return0;// 返回 0,告诉系统"程序正常结束"}
  • return 0;→ 返回 0,约定表示成功、正常退出
  • 返回其他非 0 值 → 一般表示出错(比如返回 1、-1)
  • 所以在结束后会打上return 0来表示代码结束

但int本身是 C 语言里表示 “整数” 的基本数据类型,以下为返回类型函数

返回类型意思例子意思例子
int返回整数int main()
void什么都不返回void hello()
double返回小数double area(double r)
char返回单个字符char getChar()

main函数

主函数。 main 前⾯的 int 表⽰ main 函数执⾏结束的时候返回⼀个整型类
型的值。所以在 main 函数的最后写 return 0;

  • main函数是程序的入口
  • main函数有且只有一个
  • 即使有多个.c文件main函数也只有一个

字符和ASCII

先写那么多吧,其实学到的不止这么多,但感觉自己整理自己学到的知识规整起来很束手无措,想到一个知识点之后又会跳到另一个知识点,最后又开始往上面堆砌新的知识,总想让我写的东西给后来人看也能看的明白,但又觉得这些知识随便哪里也能学得到,结果到最后写出来的东西杂乱无章还像复制粘贴出来的,脑袋昏昏的,果然老师也不是那么好当的。。。看来我得好好规划一下,这个就先当做是我的混沌期吧(笑),或许我应该走一走简单路线,看看怎么用最简单的话把我学的东西说出来,不过写这么点东西好歹把博客里的效果都学的差不多了。共勉

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 6:13:24

ai全栈软件开发day18

今日学习内容今天是 Day 18&#xff0c;继续在第三阶段「AI 应用 Web 开发」中深度前进。昨天我们学了 MongoDB 文档数据库、Spring Data MongoDB 集成与 Docker 镜像构建&#xff0c;今天按照 Day 17 结尾的计划&#xff0c;重点攻克两个非常实用的工程化主题&#xff1a;Mave…

作者头像 李华
网站建设 2026/8/31 6:13:19

Kali Linux 安装与渗透测试实战指南:从入门到合法使用

Kali Linux 是安全测试和数字取证领域使用频率最高的 Linux 发行版之一。它可以理解成一个预先装好大量安全工具的操作系统&#xff0c;基础系统来自 Debian&#xff0c;工具集覆盖信息收集、漏洞扫描、Web 应用测试、无线网络审计、逆向分析和报告输出等环节。很多零基础学习者…

作者头像 李华
网站建设 2026/8/31 6:12:44

网易2019秋招笔试编程题全解析:从贪心到动态规划的实战策略

秋招季又到了刷题的季节。如果你正在准备后端、算法岗的校招笔试&#xff0c;"网易2019秋招笔试编程题合集&#xff08;一&#xff09;"这套题应该是绕不开的。不管你是不是把网易作为目标公司&#xff0c;这套题都值得认真做一遍&#xff0c;因为它的出题风格非常典…

作者头像 李华
网站建设 2026/8/31 6:10:22

交通流量可视化模拟系统:基于Vue3、ECharts与Leaflet的实时大屏实战

简介&#xff1a;芜湖市交通流量可视化模拟系统是一套面向前端开发初学者与地理信息可视化学习者的实践项目&#xff0c;聚焦城市交通数据的动态呈现与交互分析。系统基于ECharts图表库与百度地图API&#xff0c;融合HTML、CSS、JavaScript及jQuery技术&#xff0c;结合Bootstr…

作者头像 李华
网站建设 2026/8/31 6:09:36

ESP32 LVGL动画开发指南:从原理到实战

很多刚开始接触嵌入式 UI 开发的朋友&#xff0c;第一次用 ESP32 接上屏幕后&#xff0c;往往只会用 LVGL 画几个按钮和标签。界面能显示是好事&#xff0c;但交互总感觉“硬邦邦”的&#xff1a;按钮按下去没有反馈&#xff0c;页面切换生硬&#xff0c;待机画面也不会呼吸。于…

作者头像 李华