初识C语言

简介: C语言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构化 程序设计语言之一。

C语言的介绍:

C语言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构化 程序设计语言之一。

发展史:

C语言的祖先是BCPL语言。1967年,剑桥大学的 Martin Richards 对CPL语言进行了简化,于是产生了BCPL(Basic Combined Pogramming Language)语言。

1970年,美国贝尔实验室的 Ken Thompson。以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。并且他用B语言写了第一个UNIX操作系统。

在1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

为了使UNIX操作系统推广,1977年Dennis M.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。

1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。1990年,国际标准化组织ISO(International Organization for Standards)接受了89 ANSI C 为I SO C 的标准(ISO9899-1990)。

1994年,ISO修订了C语言的标准。

1995年,ISO对C90做了一些修订,即“1995基准增补1(ISO/IEC/9899/AMD1:1995)”。

1999年,ISO有对C语言标准进行修订,在基本保留原来C语言特征的基础上,针对应该的需要,增加了一些功能,尤其是对C++中的一些功能,命名为ISO/IEC9899:1999。

2001年和2004年先后进行了两次技术修正。目前流行的C语言编译系统大多是以ANSI C为基础进行开发的,但不同版本的C编译系统所实现的语言功能和语法规则有略有差别。


C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。

语言特点:

C语言是一种成功的系统描述语言,用C语言开发的UNIX操作系统就是一个成功的范例;同时C语言又是一种通用的程序设计语言,在国际上广泛流行。世界上很多著名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程序也都使用C语言开发的,它是一种很有发展前途的高级程序设计语言。   

1. C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。   

2. C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。   

3. C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。   

4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。


第一个C语言程序:

6bf97799718244789935a1f72472204e.png


数据类型

8c144217fb63433c905a64c6f8a2d7a4.png

每个类型的大小


b0150281d2cb45dcb2741ff479694721.png36822152099c4ba7bb0e3bba4fcd0117.png


变量、常量

生活中的有些值是不变的(比如圆周率、性别、身份证号码、血型等)

有些只是可变的(比如年龄、体重、薪资等)

不变的值称为常量,改变的值称为变量。


变量的命名

1.只能由字母(包括大写小写)、数字和下划线(_)组成。

2.不能数字开头。

3.长度不超过63个字符。

4.变量名中区分大小写的。

5.变量名中不能使用关键字。


变量的分类

局部变量

全局变量


#include<stdio.h>
int global = 2019;//全局变量
int main()
{
  int local = 2018;//局部变量
  int global = 2020;//局部变量
  printf("global=%d\n", global);
  return 0;
}

变量的使用

#include <stdio.h>
int main()
{
  int numl = 0;
  int num2 = 0;
  int sum = 0;
  printf("输入两个操作数:");
  scanf("%d %d", &num1, &num2);
  sum = numl + num2;
  printf("sum = %d\n", sum);
  return 0;
}

4.4 变量的作用域和生命周期

作用域

       作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总有效               可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。

       1. 局部变量的作用域是变量所在的局部范围。

       2.全局变量的作用域是整个工程。

生命周期

       变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

       1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。

       2.全局变量的生命周期是:整个程序的生命周期。


常量

C语言中的常量和变量的定义的形式有所差异。

C语言中的常量分为以下以下几种:

       字面常量

       const 修饰的常变量

       #define 定乂的标识符常量

       枚举常量


#include<stdio.h>
//举例
enum sex
{
  MALE,
  FEMALE,
  SECRET
};
//括号中的MALE,FEMALE,SECRETE是枚举常量
int main()
{
  //字面常量演示
  3.14;//字面常量
  1000;//字面常量
  //const修饰的常变量
  const float pai = 3.14f; //这里的pai是const修饰的常变量
  pai = 5.14;//是不能直接修饰的!
  //#define的标识符常量 演示
#define MAX 100
  printf("max = %d\n", MAX);
  // 枚举常量演示
  printf("%d\n", MALE);
  printf("%d\n", FEMALE);
  printf("%d\n", SECRET);
  return 0;
}


注:


上面例子上的pai 被称为const 修饰的常变量,const 修饰的常变量在C语言中只是在语法层面限制了

变量 pai 不能直接被改变,但是pai 本质上还是一个变量的,所以叫常变量。

字符串+转义字符+注释

1.字符串

"hello world.\n"

"hello world.\n"


这种由双引号 (Double Quote)引1起来的一串字符称为字符串字面值 (String Literal),或者简称字符串。

注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\。 是结束标志,不算作字符串


#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出”\0’的重要性)
int main()
char arr1[] = "bit";
char arr2[] = {'b','i','t'};
char arr3[] = {'b','i','t'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}

转义字符

假如我们要在屏幕上打印一个目录:c:\code\test.c

我们该如何写代码?

#include <stdio.h>
int main()
printf("c: \code\test.c\n");
return 0;

实际上程序运行的结果是这样的:



4a0f5530b77244ae80d146e9ab50afee.png

74cf5ca1528d49cfa8d2ae5ddb02b110.png

#include <stdio.h>
int main()
{
    //问题1:在屏幕上打印一个单引号',怎么做?
    //问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?
    printf("%c\n", '\'');
    printf("%s\n", "\"");
    return 0;
}

注释

1. 代码中有不需要的代码可以直接删除,也可以注释掉

2. 代码中有些代码比较难懂,可以加一下注释文字

#include <stdio.h>
int Add(int x, int y)
{
    return x+y;
}
/*C语言风格注释
int Sub(int x, int y)
{
    return x-y;
}
*/
int main()
{
    //C++注释风格
    //int a = 10;
    //调用Add函数,完成加法
    printf("%d\n", Add(1, 2));
    return 0;
}

注释有两种风格:

C语言风格的注释/*xxxxxx*/

缺陷:不能嵌套注释

C++风格的注释//xxxxxxxx

可以注释一行也可以注释多行。

相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
存储 算法 关系型数据库
【CEPH-初识篇】ceph详细介绍、搭建集群及使用,带你认识新大陆
你好,我是无名小歌。 今天给大家分享一个分布式存储系统ceph。 什么是ceph? Ceph在一个统一的系统中独特地提供对象、块和文件存储。Ceph 高度可靠、易于管理且免费。Ceph 的强大功能可以改变您公司的 IT 基础架构和管理大量数据的能力。Ceph 提供了非凡的可扩展性——数以千计的客户端访问 PB 到 EB 的数据。ceph存储集群相互通信以动态复制和重新分配数据。
1870 0
【CEPH-初识篇】ceph详细介绍、搭建集群及使用,带你认识新大陆
|
4月前
|
人工智能 安全 API
OpenClaw阿里云/本地部署保姆级教程及百炼Coding Plan配置+必装5大技能指南:让AI Agent真正落地干活
在2026年AI智能体竞争白热化的当下,多数用户仍将AI局限于“问答工具”的范畴,却忽略了其核心价值——接入真实世界工具与数据源,自主完成全流程任务。OpenClaw(原Clawdbot)的革命性意义,在于通过ClawHub技能生态,让AI具备可执行的“手”和“脚”,而真正拉开使用差距的,是能否选对、用好核心技能。
711 11
|
7月前
|
JSON 数据挖掘 API
小红书笔记详情API接口指南
小红书笔记详情API可获取指定笔记的完整信息,涵盖内容、作者及互动数据,适用于内容分析与数据挖掘。接口采用GET请求,支持Bearer Token认证,返回JSON格式数据。代码具备完善封装、类型注解、异常处理与重试机制,需官方授权后使用,并遵守平台规范。(238字)
|
7月前
|
存储 JSON 安全
10-云文档环境搭建
本方案基于Docker部署NextCloud与OnlyOffice,实现私有云文档存储与在线协同编辑。通过NextCloud管理文件,集成OnlyOffice实现多人实时编辑Word、Excel等文档,支持权限控制与文件分享,构建安全高效的办公环境。
|
8月前
|
人工智能 弹性计算 安全
阿里云App SSH 工具更新体验
阿里云App SSH工具近期更新,带来UI优化、快捷命令、AI助手及横屏支持。操作更便捷,手机运维效率显著提升,尤其适合阿里云用户与命令不熟者,实用性强。
464 1
|
JSON API 数据格式
深入研究:淘宝天猫关键词搜索接口详解
淘宝和天猫提供关键词搜索商品的API接口,支持开发者按关键词获取商品列表及相关数据。功能包括通过搜索关键词(q)返回商品基本信息,如ID、标题、价格、图片、销量等。支持排序(sort)、分页(page_no/page_size)、价格区间筛选(start_price/end_price)及分类搜索(cat)。返回JSON格式数据,含商品ID、标题、价格、图片链接、详情页链接和销量等字段。
湖南省大模型备案情况分析及新通知对企业的影响
本文分析了湖南省大模型备案情况,涵盖行业应用领域、备案时间及未来发展方向,并结合2025年3月发布的生成式人工智能备案/登记专项通知,探讨其对企业的影响。湖南在人工智能领域的布局积极,大模型已应用于多个行业。新通知通过提升合规意识、加强监督检查和促进高质量发展,助力企业规范运营并推动产业健康发展。企业应主动适应政策,探索创新应用,为湖南乃至全国的人工智能发展贡献力量。
|
Web App开发 测试技术 项目管理
【Docker项目实战】使用Docker部署Servas自托管书签管理工具
【6月更文挑战第5天】使用Docker部署Servas自托管书签管理工具
692 1
【Docker项目实战】使用Docker部署Servas自托管书签管理工具
|
Linux
Linux 更新man说明手册,man中文手册
Linux 更新man说明手册,man中文手册
336 3
在Linux中,Rsync 同步时,如果要同步的源中有软连接,如何把软连接的目标文件或者目录同步?
在Linux中,Rsync 同步时,如果要同步的源中有软连接,如何把软连接的目标文件或者目录同步?

热门文章

最新文章