【C语言必知必会 | 第一篇】C语言入门,这一篇就够了

这篇具有很好参考价值的文章主要介绍了【C语言必知必会 | 第一篇】C语言入门,这一篇就够了。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。它在编程语言中具有举足轻重的地位。
此文为【C语言必知必会】系列第一篇,带你初步了解C语言,为之后的学习打下基础

【C语言必知必会 | 第一篇】C语言入门,这一篇就够了,C语言入门教程,c语言,开发语言,编程,c,c#,算法


1️⃣发展历史

C语言起源于美国贝尔实验室的贝尔实验室,由丹尼斯·里奇和肯尼斯·汤普森于20世纪70年代初期开发而成。起初,他们使用B语言对UNIX操作系统进行了改进,并逐步将其重写成了C语言。

随着UNIX的发展,C语言也得到了不断的完善和推广。为了确立C语言的标准,许多专家、学者和硬件厂商参与组建了C语言标准委员会。1989年,他们发布了第一个完整的C语言标准,即ANSI C(C89)。

【C语言必知必会 | 第一篇】C语言入门,这一篇就够了,C语言入门教程,c语言,开发语言,编程,c,c#,算法

随后,C语言标准经历了多次修订和更新。1999年发布了C99标准,其中包含了一些新的特性和语法改进。2011年发布了C11标准,进一步扩展了C语言的功能和表达能力。

C语言以其简洁、高效、可移植性和广泛应用性而闻名。它成为了许多编程领域的首选语言,包括系统级编程、嵌入式系统开发、操作系统设计等。 许多重要的软件和工具,如UNIX、Linux和MySQL等,都是使用C语言开发的。

截至目前,在计算机科学和软件工程领域,C语言仍然是一门重要且广泛应用的编程语言,对后续语言的发展也产生了深远的影响。


2️⃣语言特点

C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。

C语言具有以下几个主要的语言特点:

1.C语言的语法相对简单,并且提供了一些核心的编程结构,使得程序员可以用更少的代码实现功能。C语言的底层控制和内存管理能力使其在编写高效的程序时具有优势。

2.C语言是一种面向过程的编程语言,它侧重于按照顺序执行一系列操作步骤,通过函数调用和模块化的方式组织代码。这种特点使得C语言非常适合系统级编程和底层开发。

【C语言必知必会 | 第一篇】C语言入门,这一篇就够了,C语言入门教程,c语言,开发语言,编程,c,c#,算法

3.可移植性强:C语言的标准化以及对底层硬件的直接访问使得它在不同平台和操作系统上具有很高的可移植性。C语言编写的程序通常可以在多个系统上进行编译和运行。

4.C语言提供了指针的概念,允许直接访问和操作内存地址。 这为程序员提供了更高的灵活性和对底层资源的直接控制能力。

【C语言必知必会 | 第一篇】C语言入门,这一篇就够了,C语言入门教程,c语言,开发语言,编程,c,c#,算法

5.C语言提供了广泛的标准库,包含了大量的函数和工具,可以方便地进行文件操作、字符串处理、内存分配等常见任务。

总而言之,C语言以其简洁高效可移植底层控制能力而闻名,成为广泛应用于系统级编程、嵌入式开发和底层软件开发的重要语言。


3️⃣语言组成

数据类型:

C语言中的数据类型用来定义变量的性质和存储空间的大小。常见的数据类型包括整型(int)浮点型(float、double)字符型(char),以及派生的复杂数据类型如结构体(struct)枚举(enum)等。

常量与变量:

在C语言中,常量是指在程序执行期间值不会改变的数据。常量可以是字面值(如整数、浮点数、字符等)或使用const关键字进行声明。变量是用于存储和表示可变数据的标识符。 在使用变量之前,需要先声明并指定其数据类型。

注意: 变量名是由字母、数字和下划线组成的标识符,且不能以数字开头。变量名区分大小写,例如myVariable和myvariable是不同的变量名。

数组:

数组是相同数据类型的元素按一定次序排列而成的集合。在C语言中,数组使用方括号[]来声明,并通过下标访问其中的元素。数组的大小在声明时确定,并且下标从0开始。

【C语言必知必会 | 第一篇】C语言入门,这一篇就够了,C语言入门教程,c语言,开发语言,编程,c,c#,算法

指针:

指针是用来存储变量地址的变量。通过指针,我们可以直接访问和操作内存中的数据。在C语言中,可以使用星号*来声明指针变量,并通过取地址运算符&获取变量的地址,或者通过解引用运算符*访问指针指向的值。

字符串:

字符串是由字符组成的数组,以空字符'\0'作为结束标志。在C语言中,可以使用字符数组或者指针来表示字符串,并通过一系列的字符串操作函数(如strcpy、strlen等)进行处理。

运算符:

C语言提供了各种各样的运算符,用于完成不同类型的运算任务。常见的运算符包括算术运算符(+、-、*、/等)、关系运算符(<、>、==等)、逻辑运算符(&&、||、!等)等。

算术运算符>逻辑运算符>赋值运算符

例如,表达式a + b * c中,乘法运算符的优先级高于加法运算符,所以先计算b * c,然后再与a相加。如果要先计算a + b,可以使用括号来改变优先级,如(a + b) * c

示例如下:

#include <stdio.h>

int main() {
    int a = 10, b = 5, c = 2;
    int result;

    result = a + b * c;         // 优先级:乘法 > 加法
    printf("a + b * c = %d\n", result);

    result = (a + b) * c;       // 优先级:括号 > 加法 > 乘法
    printf("(a + b) * c = %d\n", result);

    result = a / b + c;         // 优先级:除法 > 加法
    printf("a / b + c = %d\n", result);

    result = a / (b + c);       // 优先级:括号 > 加法 > 除法
    printf("a / (b + c) = %d\n", result);

    result = a % b + c * 2;     // 优先级:乘法 > 取模 > 加法
    printf("a %% b + c * 2 = %d\n", result);

    result = (a % b) + (c * 2); // 优先级:括号 > 取模 > 乘法 > 加法
    printf("(a %% b) + (c * 2) = %d\n", result);

    return 0;
}

结果如下:

【C语言必知必会 | 第一篇】C语言入门,这一篇就够了,C语言入门教程,c语言,开发语言,编程,c,c#,算法

了解运算符的优先级可以帮助我们编写正确和清晰的表达式,并避免出现不必要的错误。

关键字:

关键字又称为保留字,就是已被C语言本身使用,不能作其它用途使用的字。 例如关键字不能用作变量名、函数名等标识符。

数据类型关键字:
short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)
long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)
long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)
signed:修饰整型数据,有符号数据类型。(C89标准新增)
unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的初始且唯一的方式。(C99标准新增)

【C语言必知必会 | 第一篇】C语言入门,这一篇就够了,C语言入门教程,c语言,开发语言,编程,c,c#,算法

复杂类型关键字:
struct:结构体声明。(K&R时期引入)
union:联合体声明。(K&R时期引入)
enum:枚举声明。(C89标准新增)
typedef:声明类型别名。(K&R时期引入)
sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)
inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)

存储级别关键字:
auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配。与static相反。当变量未指定时默认为auto。(K&R时期引入)
static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部。(K&R时期引入)
register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数。(K&R时期引入)

#include <stdio.h>

int main() {
   register int i;  // 声明一个寄存器变量

   for (i = 0; i < 10; i++) {
       printf("%d ", i);
   }
   
   return 0;
}

在上面的代码中,我们使用register关键字声明了一个整型变量i,然后在for循环中使用它进行迭代。

【C语言必知必会 | 第一篇】C语言入门,这一篇就够了,C语言入门教程,c语言,开发语言,编程,c,c#,算法

extern:指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。(K&R时期引入)
const:指定变量不可被当前线程改变(但有可能被系统或其他线程改变)。(C89标准新增)
volatile:指定变量的值有可能会被系统或其他线程改变,强制编译器每次从内存中取得该变量的值,阻止编译器把该变量优化成寄存器变量。(C89标准新增)

这些概念是C语言中非常重要的基础知识,对于理解和编写C程序至关重要。


4️⃣总结

此文为 【C语言必知必会】系列之第一篇 ,带领读者初步了解C语言,为之后的学习打下坚实的理论基础。

后续将发布 【C语言必知必会】系列之第二篇:编译器的安装与使用,读者可订阅专栏持续跟进专栏更新。文章来源地址https://www.toymoban.com/news/detail-715879.html

到了这里,关于【C语言必知必会 | 第一篇】C语言入门,这一篇就够了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【必知必会的MySQL知识】③DML语言

    目录 前言 准备 插入数据 语法格式 插入完整行数据 插入多行数据 将检索出来的数据插入表 更新数据 准备两张表 语法 实践操作 删除数据 语法 实践操作 小结 前面的两篇文章中,我们已经对MySQL有了基本了解。 并且知道了怎么用工具连接数据库?怎么创建数据库?怎么创建

    2024年02月02日
    浏览(22)
  • 【必知必会的MySQL知识】④DCL语言

    目录 一、概述 二 、授权 2.1 语法格式 2.2 语法说明 2.3 权限类型 2.4 权限级别 三、 回收权限 3.1 语法格式 3.2 语法说明 3.3 注意事项 四 、实践操作 数据控制语言,用来定义访问权限和安全级别。主要包含包括 grant , revoke grant 授予权限 revoke 回收权限 2.1 语法格式 2.

    2024年02月02日
    浏览(11)
  • AI架构师必知必会系列:自然语言处理在智能客服中的应用

    作者:禅与计算机程序设计艺术 自然语言处理(Natural Language Processing,NLP)是计算机科学领域的一个重要方向,它利用计算机对文本、语音、图像等高维数据进行自动理解、分析和表达的能力。随着信息化和互联网的飞速发展,越来越多的人从事信息获取、咨询等业务,而智

    2024年02月06日
    浏览(24)
  • 如何学习及计算机编程,入门看这一篇就够了---以c语言为例

    用计算机爬取信息(爬虫) 进行数据分析,数据可视化(大数据的某个方面) 处理海量的数据,如excel(百万条数据) example1. 来看下面一段代码 大家一定会说 这太简单了 输出hello world 学习计算机的入门程序嘛!! 那么请问 这是什么?我们第一次编程应该不会知道这是什

    2024年02月08日
    浏览(15)
  • MySql必知必会

    Buffer Pool基本概念 Buffer Pool:缓冲池,简称BP。其作用是用来缓存表数据与索引数据,减少磁盘IO操作,提升效率。 Buffer Pool由 缓存数据页(Page) 和 对缓存数据页进行描述的 控制块 组成, 控制块中存储着对应缓存页的所属的 表空间、数据页的编号、以及对应缓存页在Buffer Poo

    2024年01月22日
    浏览(18)
  • 必知必会Java

    你好,我是阿光。 最近想着把工作中使用过的java命令都梳理一下,方便日后查阅。虽然这类文章很多,但自己梳理总结后,还是会有一些新的收获。这也是这篇笔记的由来。 今天先聊聊 jps 命令。 jps 命令是JDK提供的一个工具,用于查看目标系统上的Java进程基本信息(进程

    2024年02月05日
    浏览(18)
  • 聊聊Flink必知必会(五)

    聊聊Flink的必知必会(三) 聊聊Flink必知必会(四) 从源码中,根据关键的代码,梳理一下Flink中的时间与窗口实现逻辑。 对数据流执行 keyBy() 操作后,再调用 window() 方法,就会返回 WindowedStream ,表示分区后又加窗的数据流。如果数据流没有经过分区,直接调用 window() 方法则会返

    2024年02月05日
    浏览(14)
  • 聊聊Flink必知必会(六)

    Flink是一个分布式系统,需要有效地分配和管理计算资源才能执行流应用程序。它集成了所有常见的集群资源管理器,如Hadoop YARN和Kubernetes,但也可以设置为作为一个独立的集群运行,甚至作为一个库。 Flink运行时由两种类型的进程组成:一个JobManager和一个或多个taskmanager。

    2024年02月04日
    浏览(19)
  • 聊聊Flink必知必会(七)

    虽然数据流中的许多操作一次只查看一个单独的事件(例如事件解析器),但某些操作会记住多个事件的信息(例如窗口算子)。 这些操作称为有状态的(stateful)。 有状态操作的一些示例: 当应用程序搜索某些事件模式(event patterns)时,状态(state)将存储迄今为止遇到的事件序

    2024年02月04日
    浏览(18)
  • 聊聊Flink必知必会(二)

    Flink是一个有状态的流处理框架,因此需要对状态做持久化,Flink定期保存状态数据到存储空间上,故障发生后从之前的备份中恢复,这个过程被称为Checkpoint机制。而Checkpoint为Flink提供了Exactly-Once的投递保障。 流处理是一个数据不断输入的过程,为了更好更方便的快照,需要

    2024年02月08日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包