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

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