初识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)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
存储 SQL 分布式计算
|
2月前
|
JSON Go iOS开发
企业微信iPad协议演进:从私有二进制到可扩展接口
企业微信iPad端协议演进:从封闭二进制到mmtls加密与OAuth2令牌体系,融合TLV结构、双工长连接及JSON回调,实现合规化与开放性统一。(239字)
244 3
|
3月前
|
存储 弹性计算
租用阿里云服务器按小时如何收费?1小时收费标准说明
阿里云服务器按小时收费,不同配置价格不同。例如经济型e实例2核2G每小时0.094元,计算型c9i实例2核4G每小时0.3873元,4核8G配置约0.77元/小时。价格因实例类型和资源配置而异,按量付费,先用后付。更多优惠可参与阿里云官方活动。
1020 1
|
存储 NoSQL 算法
【C语言】《C语言基础指南!》- 史上最全!
通过上述内容,你可以对 C语言 的基础知识有一个全面的了解。包括程序结构、数据类型、变量和常量、控制结构、函数、数组和字符串、结构体和联合、枚举和联合、预处理器指令、动态内存分配、文件操作、错误处理、编译器选项、调试和优化、C语言的标准库、编程技巧以及编程习惯等方面的详细讲解。希望这些内容能帮助你更好地理解和使用 C语言。
3083 5
|
4月前
|
Ubuntu Linux 云计算
CentOS与Ubuntu:Linux系统的双璧
选择Ubuntu还是CentOS,取决于用户的具体需求,如是否需要图形化界面、对稳定性的要求、软件包管理的偏好以及对商业支持的需求等。两者都是优秀的Linux发行版,只是在设计理念和目标用户群体上有所不同。#深度好文计划#
|
10月前
|
程序员 编译器 C语言
来,手把手带你写C语言的HelloWorld
本文介绍了如何使用Vscode进行C语言开发,包括安装必要插件、编写Hello World程序及代码解释。Feri强调了注释的重要性,以增强代码可读性和维护性,帮助开发者更好地协作与成长。君志所向,一往无前!
441 1
|
11月前
|
人工智能 数据可视化 数据库
低代码平台:技术复杂性的系统简化
低代码平台通过模块化和自动化技术,简化了传统开发流程中的需求分析、代码开发、测试部署等环节,显著提高了开发效率和协作能力。其核心特性如“一键编程”、“快速迭代”降低了开发复杂度,提供了敏捷开发的能力,使企业能更快响应市场需求和技术变革。可视化开发、实时渲染、分布式协作支持及无缝部署等功能进一步优化了开发体验。平台内置的五大核心引擎(SQL、功能、模板、图表、切面)进行了系统性优化,提升了数据处理能力和开发灵活性。此外,低代码平台还融合了AI技术,提供了智能代码助手、自动优化和故障排查等功能,增强了开发效率和精度。
|
缓存 Serverless 调度
Moka:ACS 容器计算服务助力CI/CD场景提效降本 70%
Moka,作为国内发展最快的HR SaaS厂商之一,在ACS产品初期就与阿里云产品团队紧密联系产品需求及体验反馈,本文将着重分享我们使用ACS在CI/CD 场景的最佳实践。
|
存储 监控 安全
对称加密在生产环境下的实践与注意事项
对称加密实践中,选择AES作为安全高效的算法,如在银行系统中。管理密钥要谨慎,避免硬编码,可借助KMS。使用如AES-CBC模式增强安全性,加盐哈希确保认证和完整性,如HMAC在API通信中的应用。注意性能优化,如并行处理和硬件加速在大数据场景。监控系统,适应新威胁,确保信息安全。【6月更文挑战第18天】
298 3
|
算法 数据挖掘 数据处理
第三届 Data-Juicer 数据挑战赛:ModelScope-Sora“数据导演”创意竞速
欢迎进入第三届 Data-Juicer 数据挑战赛:“ModelScope-Sora 文生视频大模型数据挑战赛”。