C语言入门教程|| C语言 程序结构|| C语言 基本语法

news2024/11/18 7:32:01

在我们学习 C 语言的基本构建块之前,让我们先来看看一个最小的 C 程序结构,在接下来的章节中可以以此作为参考。

C 程序主要包括以下部分:

  • 预处理器指令
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释

让我们看一段简单的代码,可以输出单词 "​Hello W3Cschool!​":

#include <stdio.h>

int main()
{
   /* 我的第一个 C 程序 */
   printf("Hello, W3Cschool! \n");
   
   return 0;
}

尝试一下

接下来我们讲解一下上面这段程序:

  1. 程序的第一行 #include <stdio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含​stdio.h​ 文件。
  2. 下一行 int main() 是主函数,程序从这里开始执行。
  3. 下一行​ /*...*/​ 将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。
  4. 下一行 printf(...) 是 C 中另一个可用的函数,会在屏幕上显示消息 "​Hello, W3Cschool!​"。
  5. 下一行 return 0; 终止 ​main()​ 函数,并返回值 ​0​。

编译 & 执行 C 程序

接下来让我们看看如何把源代码保存在一个文件中,以及如何编译并运行它。下面是简单的步骤:

  1. 打开一个文本编辑器,添加上述代码。
  2. 保存文件为 hello.c
  3. 打开命令提示符,进入到保存文件所在的目录。
  4. 键入 gcc hello.c,输入回车,编译代码。
  5. 如果代码中没有错误,命令提示符会跳到下一行,并生成 a.out ​(linux操作系统中可执行文件。 
  6. 现在,键入 a.out 来执行程序。
  7. 您可以看到屏幕上显示 "​Hello W3Cschool​"
$ gcc hello.c
$ ./a.out
Hello, W3Cschool!

请确保您的路径中已包含 gcc 编译器,并确保在包含源文件 ​hello.c​ 的目录中运行它。

如果是多个 c 代码的源文件,编译如下:

$ gcc test1.c test2.c -o main.out
$ ./main.out

在Windows上编译

使用mingw进行编译的,可以参考mingw代码编译。

对于初学者而言,最好的解决方案是直接安装集成开发环境(IDE),C/C++的集成开发环境有很多,其中比较出名的是Visual studio(微软出品,在Windows上如鱼得水,著名的Visual C++6.0,就是visual studio的一部分),codeblock(使用mingw作为编译器,也可使用微软的MSVC)和Dev-C++(一款简单但适合初学者的IDE)。这些集成开发环境提供了编译,链接等功能,还提供了debug的功能(还有很多功能,这里不一一细说了)。这些对于开发而言都是相当重要的。以编译为例,VS2019(visual studio)提供了一个运行的按钮,点击直接就可以一步编译运行源代码。

在之前的版本中和codeblock中,提供了更加详细的编译工具栏:

在VC6.0中:

含有编译,连接,运行,debug等多个功能。

在codeblock中也有单独的编译、运行的功能。

使用这些ide编译运行的方法大同小异,在写好代码后点击编译,编译成功会在下方的构建信息显示0 error(s), 0 warning(s) 。通常出现warning说明代码中有不合理的地方,但不影响编译,可以运行(单元线结果可能会有偏差),出现error代表代码出现错误,无法通过编译,不能运行。编译成功后就可以运行代码了。

C语言 基本语法
 

我们已经看过 C 程序的基本结构,这将有助于我们理解 C 语言的其他基本的构建块。

C 的标记(Tokens)

C 程序由各种标记组成,标记可以是关键字、标识符、常量、字符串值,或者是一个符号。例如,下面的 C 语句包括五个标记:

printf("Hello, W3Cschool! \n");

这五个标记分别是:

printf    // 标识符
(    // 符号
"Hello, W3Cschool! \n"    // 字符串值
)    // 符号
;    // 分号是语句结束符

分号 ;

在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。

例如,下面是两个不同的语句:

printf("Hello, W3Cschool! \n");
return 0;

注释

注释就像是 C 程序中的帮助文本,它们会被编译器忽略。它们以 ​/*​ 开始,以字符 ​*/​ 终止,如下所示:

// 单行注释

/* 
   多行注释
   多行注释
   多行注释
   */

  • //​也叫行级注释 因为只能注释一行
  • /* */ ​这个是多行注释 也叫块级注释 这种格式的注释可以单行或多行。

注意:不能在注释内嵌套注释,注释也不能出现在字符串或字符值中 

错误演示:

//我是单行注释//的错误演示
char a ='//A';

标识符

C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。一个标识符以字母 ​A-Z​ 或​a-z​ 或下划线​_​ 开始,后跟零个或多个字母、下划线和数字(​0-9​)。

C 标识符内不允许出现标点字符,比如 ​@​、​$​ 和 ​%​。C 是区分大小写的编程语言。因此,在 C 中,Manpower 和 manpower 是两个不同的标识符。下面列出几个有效的标识符:

mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal

关键字

下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。

autoelselongswitch
breakenumregistertypedef
caseexternreturnunion
charfloatshortunsigned
constforsignedvoid
continuegotosizeofvolatile
defaultifstaticwhile
dointstruct_Packed
double

C 中的空格

只包含空格的行,被称为空白行,可能带有注释,C 编译器会完全忽略它。

在 C 中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 ​int​)在哪里结束,下一个元素在哪里开始。因此,在下面的语句中:

int age;

在这里,​int​ 和 ​age​ 之间必须至少有一个空格字符(通常是一个空白符),这样编译器才能够区分它们。另一方面,在下面的语句中:

fruit = apples + oranges;   // 获取水果的总数

fruit​ 和 ​=​,或者 ​=​ 和 ​apples​ 之间的空格字符不是必需的,但是为了增强可读性,您可以根据需要适当增加一些空格。

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

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

相关文章

Anfis-基于模糊推理的自适应神经网络程序(免费分享)

输出结果展示&#xff1a;完整代码&#xff1a;clear;close all;gamma0.75;%设定惯性因子eps10.005;%设定停止训练的条件参数m18;%设定隶属函数个数m28;a-1;b1;w0a(b-a)*rand(1,m1*m2);%初始化权值阵for i1:2switch icase 1,beta0.75;%设定学习率otherwise,beta0.25;endc[2/7*(…

ESP-IDF:链表例程实现创建,增加,打印数据成员,释放链表空间等功能

链表例程&#xff1a; typedef struct LISTNODE { void *data_p; LISTNODE *next; } mlistnode; typedef struct MYLIST { int size; mlistnode *head; } mylist; mylist *initial_mylist() { mylist *p (mylist *)malloc(sizeof(mylist)); p->size 0; p->head (ml…

下载指定的tomcat版本和配置

如何下载指定的tomcat版本 tomcat官网:https://archive.apache.org/ tomcat指定版本下载地址&#xff1a;https://archive.apache.org/dist/tomcat/ 找到指定的版本&#xff0c;例如这里要找到tomcat8.0.1 bin是二进制文件&#xff0c;src是源码文件 配置tomcat环境变量 t…

Paddle进阶实战系列(二):智慧交通预测系统

✨写在前面&#xff1a;强烈推荐给大家一个优秀的人工智能学习网站&#xff0c;内容包括人工智能基础、机器学习、深度学习神经网络等&#xff0c;详细介绍各部分概念及实战教程&#xff0c;通俗易懂&#xff0c;非常适合人工智能领域初学者及研究者学习。➡️点击跳转到网站。…

[ 环境搭建篇 ] 安装python环境并配置环境变量(附python3.10.3安装包)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

力扣刷题记录——496. 下一个更大元素 I、500. 键盘行、506. 相对名次

本专栏主要记录力扣的刷题记录&#xff0c;备战蓝桥杯&#xff0c;供复盘和优化算法使用&#xff0c;也希望给大家带来帮助&#xff0c;博主是算法小白&#xff0c;希望各位大佬不要见笑&#xff0c;今天要分享的是——《496. 下一个更大元素 I、500. 键盘行、506. 相对名次》。…

Acwing4700. 何以包邮?(DP,01背包)

新学期伊始&#xff0c;适逢顿顿书城有购书满 x 元包邮的活动&#xff0c;小 P 同学欣然前往准备买些参考书。 一番浏览后&#xff0c;小 P 初步筛选出 n 本书加入购物车中&#xff0c;其中第 i 本&#xff08;1≤i≤n&#xff09;的价格为 ai 元。 考虑到预算有限&#xff0…

【大厂高频真题100题】《删除无效的括号》 真题练习第24题 持续更新~

删除无效的括号 给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。 返回所有可能的结果。答案可以按 任意顺序 返回。 示例 1: 输入:s = "()())()" 输出:["(())()","()()()"] 示例 2: 输入:…

1.初识React

React是用于构建用户界面的JavaScript库&#xff0c;可以应用于web&#xff0c;app(react-native),VR(react 360) 目录 1 安装React 2 简单使用 2.1 在页面上创建一个元素 2.2 React.createElement() 2.3 ReactDom.render() 3 React脚手架 3.1 初始化项目 3.2 …

国际人才考试中级的一点备考经验

在学英语的过程中&#xff0c;考证算是一件检验自己学习成果不错的方法&#xff0c;一开始是考虑了考雅思的&#xff0c;但综合自己幼儿园水平的听力&#xff0c;打算先放一放&#xff0c;考一考国才试试水。 国才考试近几年才有&#xff0c;知名度稍差&#xff0c;不过它不限制…

【Nginx】Nginx原理及优化参数配置

1. master和worker2. worker如何进行工作3. 一个master和多个woker有好处4. 设置多少个worker合适5. 连接数worker_connection 1. master和worker 2. worker如何进行工作 3. 一个master和多个woker有好处 首先&#xff0c;对于每个 worker 进程来说&#xff0c;独立的进程&am…

读书:《有无之境:王阳明哲学的精神》

《有无之境&#xff1a;王阳明哲学的精神》 王阳明晚年的时候&#xff0c;把他的哲学概括成了四句话&#xff0c;即四句教&#xff1a; 无善无恶心之体&#xff1b; 有善有恶意之动&#xff1b; 知善知恶是良知&#xff1b; 为善去恶是格物。 第一句&#xff1a;无善无恶心…

Trino源码分析:sql字段解析

业务中需要对Trino查询语句中涉及的字段进行处理&#xff0c;所以对这一段源码进行追踪分析&#xff0c;记录如下。 源码追踪是从QueuedStatementResource类开始的。 QueuedStatementResource类与ExecutingStatementResource类&#xff0c;提供用户执行查询相关的Restful接口。…

【C进阶】自定义类型——结构体、枚举和联合体

家人们欢迎来到小姜的世界&#xff0c;<<点此>>传送门 这里有详细的关于C/C/Linux等的解析课程&#xff0c;家人们赶紧冲鸭&#xff01;&#xff01;&#xff01; 客官&#xff0c;码字不易&#xff0c;来个三连支持一下吧&#xff01;&#xff01;&#xff01;关注…

MySQL高级【事务原理】

1&#xff1a;事务原理1.1&#xff1a;事务基础1). 事务 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 2). 特性 • …

Leetcode 算法刷题Day22-----------------------二叉树

Leetcode 算法刷题Day22-----------------------二叉树 1. 235. 二叉搜索树的最近公共祖先 题目链接&#xff1a;https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/文章讲解&#xff1a;https://programmercarl.com/0235.%E4%BA%8C%E5%8F%89%E6…

Burp Suite Professional v2022.12.6 Crack

Burp Suite 被描述为通过 Port Swigger 提供给用户和开发人员的网络安全工具组合的重要过程。它有能力为开发人员提供服务&#xff0c;也有能力为具有竞争优势的用户提供卓越的研究。Burp Suite 基本上是一个集成平台&#xff0c;呈现给用户和开发人员&#xff0c;用于执行 Web…

[Zombodb那些事]Zombodb执行引擎

Zombodb执行引擎0.前言我们在使用Zombodb时&#xff0c;会使用一些SQL查询&#xff0c;例如&#xff1a;CREATE EXTENSION zombodb; DROP EXTENSION zombodb; CREATE INDEX idxtest_analyze_text ON test_analyze_text USING zombodb ((test_analyze_text.*)); DROP TABLE idxt…

机器学习实战:一文详解K近邻算法,包括原理解析+实战案例

各位同学好&#xff0c;今天我向大家介绍一下python机器学习中的K近邻算法。内容有&#xff1a; K近邻算法的原理解析&#xff1b;实战案例–红酒分类预测。 案例简介&#xff1a;有178个红酒样本&#xff0c;每一款红酒含有13项特征参数&#xff0c;如镁、脯氨酸含量&#x…

从 PageHelper 到 MyBatis Plugin

在很多业务场景下我们需要去拦截 SQL&#xff0c;达到不入侵原有代码业务处理一些东西&#xff0c;比如&#xff1a;历史记录、分页操作、数据权限过滤操作、SQL 执行时间性能监控等等&#xff0c;这里我们就可以用到 MyBatis 的插件 Plugin。下面我们来了解一下 Plugin 到底是…