2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家
**
今日所学
今天是我使用克尼汉和里奇编写的《C 程序设计语言》(即由该语言创造者所著之书)开启 C 语言学习之旅的第一天。
我在 WSL2 Ubuntu 环境中设置了工作目录,并从头开始手动编写了前三个 C 语言程序,随后在终端中进行了编译和运行。
程序一:你好,世界
这是经典的入门程序。我了解到 #include <stdio.h> 会引入标准库,main() 是程序执行的起点,并且即使这个看似简单的六行程序,在使用 strace 工具运行时也会触发超过 30 次内核操作。printf 函数在最基本的层面上会转化为直接与内核通信的 write() 系统调用。
程序二:算术运算
学习了整数除法与浮点数除法的区别。最大的收获是:在 C 语言中,10 / 3 的结果是 3,而不是 3.333333。当对整数进行除法运算时,C 语言会完全舍弃小数部分。这被称为整数截断,如果开发人员对除法结果做出错误假设,可能会导致实际的安全漏洞。
还学习了格式说明符。%d 用于整数,%f 用于浮点数,%s 用于字符串,%x 用于十六进制数。使用错误的格式说明符不仅会导致输出错误,在特定条件下还会导致栈内存泄漏。这就是格式化字符串漏洞的来源。
程序三:内存地址
开始探索 C 语言如何暴露原始内存。& 运算符可以获取变量的实际内存地址,而 %p 用于打印该地址。这是接下来要学习的指针操作的基础。
今日使用的工具:gcc、nano、WSL2 Ubuntu
遇到并解决的错误:缺少 #include 指令、引号错误、格式说明符错误、文件名中误用逗号代替点号、在创建文件之前进行编译。**
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。