C 基本语法

简介: C 基本语法

C 基本语法

我们根据这一小段代码,借此了解一些C语言的基础语法知识。

#include <stdio.h>
int main()
{
    printf("Hello World\n");
    return 0;   
}

1. 主函数

首先,主函数main,一个标准的主函数如下:

int main()  //  这是主函数
{
    return 0;   //  主函数返回值
}

main翻译成中文是主要的、最重要的意思,而在C语言里面表示一个主函数。(稍后我们会讨论什么是计算机语言里面的函数,以及主函数在C语言程序中的存在意义。)

双斜杠后面的为注释,打一个比较形象的比喻,注释就类似于老师在作业本上的批注。

一般来说,注释用于标注这段代码的用途或解释思路等。因为注释不会被当做代码进行编译,所以无论添加什么注释内容,都不会对代码的实际运行产生任何影响。

如上代码中,用注释标出了哪里为主函数,哪里是函数的返回值。

2. 什么是函数?

我们先谈谈什么是函数?在大家的认知里面,函数是数学领域的一个名词,它可能是如下图所示:

在这里插入图片描述
但是,这只是数学领域中的函数,与编程语言中的函数完全不同。

在编程语言里面,你可以把函数看做一个盒子,这个盒子有如下几个特性:

  • 开始执行时,函数可以被输入一些值
  • 执行过程中,函数可以做一些事情
  • 执行完成后,函数可以返回一些值

在这里插入图片描述
其中,int表明了函数的返回值类型,int是integer(整数)的缩写。

main是函数名,main后面的括号()内为输入参数,目前为空。

return后跟函数的返回值,为0。而0是一个整数,和函数名前面的int对应。

我们总结一下函数的写法公式。

函数返回值类型 函数名(函数输入参数值)  
{
    做点什么事情
    return 函数返回值;
}

3. 写一个自己的函数

我们不如趁热打铁,根据上面的函数写法的公式,写一个两个整数加法的函数。这个函数需要做到:输入两个整数,返回他们相加的结果。

这个既然这个函数是用于计算加法的,我们把函数名取名为add。当然自定义函数的函数名可以按照自己的喜好来写,就算写成aaaaa也行。不过,为了函数名拥有语义化,方便人阅读理解,我们一般使用英文来作为函数名。

//  这一段代码被称之为add函数的函数定义
int add(int a, int b)
{
    return a+b;
}

4. 主函数是整个C语言程序的入口

上面我们已经自己定义好了一个add函数,那我们需要怎样来使用它呢?add函数能直接运行嘛?

答案是不行的。

所有的C语言代码都有一个起始入口,而这个入口就是主函数main。进入了主函数以后,才能经由主函数来调用其他函数。

这也意味着,每个C语言代码,只能有且只有一个main函数。

我们把代码稍微修改,现在代码如下。

#include <stdio.h>
int add(int a, int b)  
{
    return a + b;
}

int main()
{
    int result;
    result = add(2, 3);
    printf("%d", result);
    return 0;
}

C 的令牌(Token)

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

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

这五个令牌分别是:

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

分号
C语言中语句分为简单语句和复合语句,其中简单语句以分号“;”作为结束的标记,以“}”作为语句结束的标记。 C语言中语句分为简单语句(simple statement)和复合语句(compound statement)。

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

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

注释
C 语言有两种注释方式:

// 单行注释

以 // 开始的单行注释,这种注释可以单独占一行。

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

标识符
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 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。

在这里插入图片描述

C 中的空格

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

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

int age;

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

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

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

相关文章
|
编译器 API C语言
C/C++ 获取文件名的方法:分享一些实用的获取文件名的方法和技巧(__FILE__,__builtin_FILE(),__BASE_FILE__等)
C/C++ 获取文件名的方法:分享一些实用的获取文件名的方法和技巧(__FILE__,__builtin_FILE(),__BASE_FILE__等)
1482 0
|
安全 前端开发 JavaScript
某教程学习笔记(一):06、漏洞分析(工具篇)
某教程学习笔记(一):06、漏洞分析(工具篇)
257 0
|
4月前
|
消息中间件 缓存 Java
医院信息系统(HIS)的开发架构解析,代码示例
医院信息系统(HIS)是现代医院的核心,其架构设计直接影响系统稳定性、扩展性与用户体验。本文解析HIS架构演进历程,从单机、C/S、B/S到微服务与云原生架构,结合代码示例,深入讲解现代HIS系统的分层架构、核心模块与关键技术实践。
1073 1
|
11月前
|
存储 安全 网络安全
服务器感染了.baxia勒索病毒,如何确保数据文件完整恢复?
近年来,勒索病毒如.baxia不断演变,利用漏洞、社交工程等手段加密文件,威胁范围扩大。加密货币的兴起使其支付方式更匿名,追踪困难。技术支持尤为重要,添加技术服务号(shuju315),专业团队提供数据恢复方案。面对复杂解密要求,包括赎金支付、个人信息提供和执行特定操作,需保持冷静并寻求帮助。防御措施包括加强安全意识、定期备份数据、安装杀毒软件、避免未知文件、更新系统及制定应急响应计划。
490 11
|
前端开发 JavaScript 开发者
< elementUi 下拉选择框组件 树状部门选择( 多选/单选 )>
在前端开发中,为解决ElementUI缺少处理树状数据选择的Select组件问题,封装了一个Vue子组件`SelectTree`。组件支持单选和多选,具备搜索功能和懒加载特性。单选示例展示了如何展示树状部门数据,而多选则增加了已选内容的取消功能。此外,还新增了根据等级限制选择的功能。文章提供了详细的代码实现和效果截图,对需要此类组件的开发者具有参考价值。
1014 1
< elementUi 下拉选择框组件 树状部门选择( 多选/单选 )>
|
JavaScript 前端开发
【Vue 3】如何实现动态表单生成器的拖拽功能?
【Vue 3】如何实现动态表单生成器的拖拽功能?
|
缓存 算法 持续交付
【Conan 入门教程】总结 Conan 中的环境变量,设置主目录,配置文件等
【Conan 入门教程】总结 Conan 中的环境变量,设置主目录,配置文件等
1274 1
|
存储 并行计算 PyTorch
社区供稿 | 10G显存,通义千问-7B-int4消费级显卡最佳实践
在魔搭社区,通义千问团队发布了Qwen-7B-Chat的Int4量化模型,Qwen-7B-Chat-Int4。该方案的优势在于,它能够实现几乎无损的性能表现,模型大小仅为5.5GB,内存消耗低,速度甚至超过BF16。
|
NoSQL 前端开发 安全
Springboot----项目整合微信支付(获取支付二维码)
Springboot----项目整合微信支付(获取支付二维码)
844 0
Springboot----项目整合微信支付(获取支付二维码)
|
移动开发 JSON 前端开发
Vite 2.x + React + Zarm + Less + React Router v6 + Axios + flexible.js 搭建前端 H5 开发环境2
Vite 2.x + React + Zarm + Less + React Router v6 + Axios + flexible.js 搭建前端 H5 开发环境
448 0
Vite 2.x + React + Zarm + Less + React Router v6 + Axios + flexible.js 搭建前端 H5 开发环境2