C语言基础系列【1】第一个C程序:Hello, World!

news2025/3/13 14:35:00

C语言的历史与特点

历史背景

C语言起源于20世纪70年代,最初是由美国贝尔实验室的Dennis Ritchie和Ken Thompson为了开发UNIX操作系统而设计的一种编程语言。在UNIX系统的开发过程中,他们发现原有的B语言(由Thompson设计)在功能和效率上都不能满足需求,因此决定设计一种新的语言,即C语言。

C语言最初是为了实现UNIX内核而设计的,但随着时间的推移,它逐渐成为了一种广泛应用于各种领域的通用编程语言,直到现在,C语言还是非常流行,应用在很多行业。

主要特点

  • 结构化:C语言是一种结构化编程语言,支持函数、循环、条件语句等结构化控制逻辑,使得程序更加清晰且易于理解。
  • 高效性:因为C语言编写的程序可以直接编译成机器码,运行效率非常高。所以C语言在需要高性能的应用场合,如操作系统、嵌入式系统等领域得到了广泛应用。
  • 跨平台性:C语言具有良好的跨平台性,可以在不同的操作系统和硬件平台上进行编译和运行。这得益于C语言的标准化和可移植性设计,所以它几乎可以跨所有平台,比如WindowsAndroidiOSmacOSLinuxPlayStationXbox等等。
  • 灵活性:C语言提供了丰富的数据类型和操作符,允许程序员进行各种底层操作,如内存管理、指针运算等。所以C语言在开发底层系统软件和高效算法时具有很大优势。
  • **底层访问:**程序员通过C语言可以直接访问硬件资源,如内存地址、端口等。所以C语言在嵌入式系统、驱动程序开发等领域有不可替代的地位。

C语言的应用领域

由于C语言的上述特点,它在许多领域都得到了广泛应用。以下是一些主要的应用领域:

  • 操作系统开发:C语言是开发操作系统最常用的编程语言之一。常见的操作系统,如UNIX、Linux、Windows等,都是用C语言编写的。
  • 嵌入式系统开发:C语言在嵌入式系统开发中占据主导地位。比如智能家居设备、汽车控制系统等。
  • 数据库管理:许多数据库系统,如SQLite、MySQL、PostgreSQL等,都使用了C语言进行底层开发。
  • 网络通信:C语言在网络通信领域也有广泛应用。它支持各种网络通信协议和套接字编程。
  • 多媒体处理:C语言广泛用于开发多媒体应用,比如音频和视频编解码器、流媒体服务器等,这些应用需要高效处理大量数据和实时响应。

第一个C程序:Hello, World!

下面是一个简单的C语言程序,它会在屏幕上输出“Hello, World!”这句话。

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}
  • #include <stdio.h>:这是一个预处理指令,用于包含标准输入输出库。这个库提供了各种输入输出函数,如printf()函数用于输出字符串。
  • int main():这是程序的主函数,也是程序的入口点。在C语言中,程序都会从main函数开始执行。int表示这个函数返回一个整数值,这个值通常用于表示程序的退出状态。0表示程序成功执行,非零值表示程序执行过程中出现了错误。
  • printf("Hello, World!\n");:这是printf()函数的调用,用于输出字符串“Hello, World!”到屏幕上。\n是一个换行符,表示在输出字符串后换行。
  • return 0;:这表示main函数返回了一个整数值0,表示程序成功执行完毕。

编译和运行

要编译和运行这个C程序,你需要一个C语言编译器。以下是使用clang编译器编译和运行这个程序的步骤:

  1. 将上述代码保存到一个文件中,文件名可以是hello.c
  2. 打开终端或命令提示符,导航到保存hello.c文件的目录。
  3. 输入clang hello.c -o hello命令来编译这个程序。这个命令会生成一个名为hello的可执行文件。
  4. 输入./hello命令来运行生成的可执行文件。你应该会在屏幕上看到“Hello, World!”的输出。

clang编译器更多是用在macOS平台和Linux平台中,如果你是在Windows平台上开发,可以使用Visual Studio或者VSCode编译器,学习过程中你也可以使用很多在线编译器进行编译运行,比如:https://godbolt.org/。

如图,在线编译器中,你可以左侧输入代码,右侧即可查看运行结果,很方便我们学习。

通过这个简单的例子,你可以初步了解C语言的基本语法和程序结构。随着学习的深入,你将能够编写更加复杂和有用的C语言程序。

作者介绍

程序喵大人

  • 35- 资深C/C++/Rust/Android/iOS客户端开发
  • 10年大厂工作经验
  • 嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手
  • 《C++20高级编程》《C++23高级编程》等多本书籍著译者

C++训练营

专为校招、社招3年工作经验的同学打造的1V1 C++训练营,量身定制学习计划、每日代码review,简历优化,面试辅导,一条龙服务,已帮助多名学员获得offer!训练营介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2292098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LLM】DeepSeek-R1-Distill-Qwen-7B部署和open webui

note DeepSeek-R1-Distill-Qwen-7B 的测试效果很惊艳&#xff0c;CoT 过程可圈可点&#xff0c;25 年应该值得探索更多端侧的硬件机会。 文章目录 note一、下载 Ollama二、下载 Docker三、下载模型四、部署 open webui 一、下载 Ollama 访问 Ollama 的官方网站 https://ollam…

go-zero学习笔记(三)

利用goctl生成rpc服务 编写proto文件 // 声明 proto 使用的语法版本 syntax "proto3";// proto 包名 package demoRpc;// golang 包名(可选) option go_package "./demo";// 如需为 .proto 文件添加注释&#xff0c;请使用 C/C 样式的 // 和 /* ... */…

C# 修改项目类型 应用程序程序改类库

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

地址查询API接口:高效查询地址信息,提升数据处理效率

地址查询各省市区API接口 地址查询是我们日常生活中经常遇到的一个需求&#xff0c;无论是在物流配送、地图导航还是社交网络等应用中&#xff0c;都需要通过地址来获取地理位置信息。为了满足这个需求&#xff0c;我们可以使用地址查询API接口来高效查询地址信息&#xff0c;提…

图 、图的存储

图的基本概念&#xff1a; 图g由顶点集v和边集e组成&#xff0c;记为g&#xff08;v&#xff0c;e&#xff09; 用|v|表示图g中顶点的个数&#xff0c;也称图g的阶&#xff0c;用|e|表示图g中边的条数 线性表可以是空表&#xff0c;树可以是空树&#xff0c;但图不可以是空&…

【数据结构】(4) 线性表 List

一、什么是线性表 线性表就是 n 个相同类型元素的有限序列&#xff0c;每一个元素只有一个前驱和后继&#xff08;除了第一个和最后一个元素&#xff09;。 数据结构中&#xff0c;常见的线性表有&#xff1a;顺序表、链表、栈、队列。 二、什么是 List List 是 Java 中的线性…

YOLO11/ultralytics:环境搭建

前言 人工智能物体识别行业应该已经饱和了吧&#xff1f;或许现在并不是一个好的入行时候。 最近看到了各种各样相关的扩展应用&#xff0c;为了理解它&#xff0c;我不得不去尝试了解一下。 我选择了git里非常受欢迎的yolo系列&#xff0c;并尝试了最新版本YOLO11或者叫它ultr…

Spring Boot 2 快速教程:WebFlux优缺点及性能分析(四)

WebFlux优缺点 【来源DeepSeek】 Spring WebFlux 是 Spring 框架提供的响应式编程模型&#xff0c;旨在支持非阻塞、异步和高并发的应用场景。其优缺点如下&#xff1a; 优点 高并发与低资源消耗 非阻塞 I/O&#xff1a;基于事件循环模型&#xff08;如 Netty&#xff09;&am…

《OpenCV》——图像透视转换

图像透视转换简介 在 OpenCV 里&#xff0c;图像透视转换属于重要的几何变换&#xff0c;也被叫做投影变换。下面从原理、实现步骤、相关函数和应用场景几个方面为你详细介绍。 原理 实现步骤 选取对应点&#xff1a;要在源图像和目标图像上分别找出至少四个对应的点。这些对…

20250202在Ubuntu22.04下使用Guvcview录像的时候降噪

20250202在Ubuntu22.04下使用Guvcview录像的时候降噪 2025/2/2 21:25 声卡&#xff1a;笔记本电脑的摄像头自带的【USB接口的】麦克风。没有外接3.5mm接口的耳机。 缘起&#xff1a;在安装Ubuntu18.04/20.04系统的笔记本电脑中直接使用Guvcview录像的时候底噪很大&#xff01; …

The Simulation技术浅析(四):随机数生成

随机数生成技术 是 The Simulation 中的核心组成部分,广泛应用于蒙特卡洛模拟、密码学、统计建模等领域。随机数生成技术主要分为 伪随机数生成器(PRNG,Pseudo-Random Number Generator) 和 真随机数生成器(TRNG,True Random Number Generator)。 1. 伪随机数生成器(PR…

结构体DMA串口接收比特错位

发送&#xff1a; 显示&#xff1a; uint16_t接收时候会比特错位。

如何在Intellij IDEA中识别一个文件夹下的多个Maven module?

目录 问题描述 理想情况 手动添加Module&#xff0c;配置Intellij IDEA的Project Structure 问题描述 一个文件夹下有多个Maven项目&#xff0c;一个一个开窗口打开可行但是太麻烦。直接open整个文件夹会发现Intellij IDEA默认可能就识别一个或者几个Maven项目&#xff0c;如…

基于UKF-IMM无迹卡尔曼滤波与交互式多模型的轨迹跟踪算法matlab仿真,对比EKF-IMM和UKF

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于UKF-IMM无迹卡尔曼滤波与交互式多模型的轨迹跟踪算法matlab仿真,对比EKF-IMM和UKF。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行 3.核心程序 .…

YOLOV11-1:YoloV11-安装和CLI方式训练模型

YoloV11-安装和CLI方式训练模型 1.安装和运行1.1安装的基础环境1.2安装yolo相关组件1.3命令行方式使用1.3.1 训练1.3.2 预测 本文介绍yoloV11的安装和命令行接口 1.安装和运行 1.1安装的基础环境 GPU环境&#xff0c;其中CUDA是12.4版本 1.2安装yolo相关组件 # 克隆github…

Pluto固件编译笔记

前段时间我已经做到在电脑上交叉编译一个简单的c/c程序&#xff0c;然后复制到pluto上运行。 要做到这一点&#xff0c;其实参考adi pluto官网的wiki就能做到了。 但这样有几个问题&#xff0c;只能做到简易程序&#xff0c;如果程序复杂&#xff0c;要调用更多库而SYSROOT里…

弄懂Runable,Callable,Future之间的关系

JDK1.5之前&#xff0c;我们创建线程有这样两种方式 1.继承Thread类 2.连接实现Runnable接口 但是这两个方法我们都没有返回值&#xff0c;如果需要获取任务返回结果怎么办&#xff1f; 然后在JDK1.5之后&#xff0c;官方就提供了Callable和Future&#xff0c;有获取任务返…

Kafka中文文档

文章来源&#xff1a;https://kafka.cadn.net.cn 什么是事件流式处理&#xff1f; 事件流是人体中枢神经系统的数字等价物。它是 为“永远在线”的世界奠定技术基础&#xff0c;在这个世界里&#xff0c;企业越来越多地使用软件定义 和 automated&#xff0c;而软件的用户更…

Hugging Face GGUF 模型可视化

Hugging Face GGUF 模型可视化 1. Finding GGUF files (检索 GGUF 模型)2. Viewer for metadata & tensors info (可视化 GGUF 模型)References 无知小儿&#xff0c;仙家雄霸天下&#xff0c;依附强者才是唯一的出路。否则天地虽大&#xff0c;也让你们无路可走&#xff0…

小程序项目-购物-首页与准备

前言 这一节讲一个购物项目 1. 项目介绍与项目文档 我们这里可以打开一个网址 https://applet-base-api-t.itheima.net/docs-uni-shop/index.htm 就可以查看对应的文档 2. 配置uni-app的开发环境 可以先打开这个的官网 https://uniapp.dcloud.net.cn/ 使用这个就可以发布到…