【零基础上手C语言】——初识C语言(1)基础认识C语言内容

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 基础认识C语言内容,并简单实现一个C语言程序

认识C语言

首先,来看C语言之前,我们先来讨论一下“语言”

什么是语言?

(语言是人类用嘴说出来的话,它由语音、语汇和语法所组成,它跟思想有密切关系,是表达情意、传递思想的重要工具,是人类区别于其他动物的本质特征。)
从官方解释来看,语言其本质来说就是沟通的工具。
人和人之间的语言:汉语、英语、法语、日语 西班牙语...
那人和机器之间又怎么沟通呢?
于是演变出了计算机语言:C/C++/Java/Python/go等上百种语言

那什么又是C语言呢?

C语言是一门通用计算机编程语言 ,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级储存器、产生少量机器码以及不需任何运行环境支持便能运行的编程语言。

计算机语言的发展


image.png

C语言是母体语言,是人机交互接近底层的桥梁。学习C有助于更好的理解C++,Java,C#,Perl以及其他基于C的特性的语言。
第一开始就学习其他语言的程序员往往不能很好的掌握继承自C语言的基本特性。
同时近50年间,在TIOBE排行榜中,C/C++位置长期霸占前三名,没有丝毫撼动,可谓经典永不过时!
image.png

第一个C语言程序

编译器的基本使用

C语言的实现需要编译器,这里以VS2019(集成开发环境(IDE))为示例
实现一个C语言代码的步骤:
(1)在编辑器中创建一个项目
image.png
image.png
image.png

(2)在项目中创建xxx.c文件
当创建好项目,进入界面,找到解决方案资源管理器
image.png

然后鼠标右键点击源文件,在子菜单中鼠标移动到添加,在下一级菜单中点击新建项
image.png

注意:如果你的界面中未出现解决方案资源管理器,可从界面上方工具栏中的视图中找到
image.png

当你添加新建项后,会进入下图界面,先点击C++文件,随后将名称改为.c为后缀的文件,最后点击添加
image.png

(3)编写代码并运行
这就是你创建好的C语言源文件,点开你的文件进行代码编写即可
image.png

当你编写好代码后,在工具栏中的调试中点击开始执行或开始调试(也可使用命令后对应的快捷键进行操作),即可使代码开始运行
image.png

数据类型

在我们使用C语言编写代码时,,总离不开去定义一些变量,那这些数据在计算机内存中又是怎么存储的呢?又是以什么方式进行存储?接下来我就介绍一些基础的数据类型

C语言的数据类型基本有以下几种:

    char      //字符数据类型
    short     //短整型
    int       //整形
    long      //长整型
    long long //更长的整型
    float     //单精度浮点数
    double    //双精度浮点数

不知你有没有想过为什么会创建这么多的数据类型呢?设置一种数据类型不就行了吗?何必自取其扰呢?
其实设置这么多数据类型都是有他的缘由的,为回答这个问题,我们还是先看一下每种类型所创建的空间在内存中所占的大小。

#include<stdio.h>
int main()
{
    printf("%d\n", sizeof(char));
    printf("%d\n", sizeof(short));
    printf("%d\n", sizeof(int));
    printf("%d\n", sizeof(long));
    printf("%d\n", sizeof(long long));
    printf("%d\n", sizeof(float));
    printf("%d\n", sizeof(double));
return 0;
}

image.png

从运行结果来看,每种类型在内存中所占大小是不同的,所以给每一个变量用一个合适的数据类型进行修饰,可以更高效地利用内存空间,节省内存。在我们早期的计算机中,存储空间很小,内存是很珍贵的,能省则省,所以我们才要给数据分配合适的存储空间进行使用。
但是我们这里代码运行的结果所呈现出来的数字又是什么意思呢?它的单位又是什么呢?为了解答这个问题,就不得不先解释一下数据在内存中是如何存储的了。在这里先告诉大家这里的单位是字节(byte)
计算机中,最小的单位是比特位(bit),再往上就是字节(byte),生活中常见的有kb、mb、gb、tb、pb。
image.png

众所周知,计算机是一个硬件,需要通电,分为正电和负电,正好对应1/0二进制位,所以,我们计算机存储和处理的就是二进制,那么一个二进制位(也就是0/1)就被储存一个bit的空间里
1个字节由8个比特位(bit)组成,01001001就代表一个字节
下图是一个整型数据存储的流程
image.png

数据类型的使用

//数据类型 变量名 = 初始值
char ch = 'Q'
int age = 19
float stature = 1.77f

以上述代码第一个char类型举例,它的意思代表的是:向计算机 用char字符数据类型 申请一块1个字节的存储空间,并为该空间取名为ch,并在该空间内存储‘Q’。
另外注意:.C语言规定,sizeof(long)>=sizeof(int),所以我们经常见到sizeof(long)为4或者8(建议一般情况下尽量不使用long)

变量、常量

变量命名

1.只能由字母(包括大写和小写)、数字和下划线(_)组成
2.不能以数字开头
3.长度不能超过63个字符
4.变量名中区分大小写
5.变量命中不能使用关键字

变量的分类

局部变量

局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。

全局变量

全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。全局变量的说明符为 extern。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。

//示例
#include <stdio.h>
int a = 100;//全局变量
int main()
{
    int b = 10;//局部变量
    return 0;
}

但如果出现以下情况,局部变量名和全局变量名冲突时,程序又怎么运行呢?两个变量的设置又有没有问题呢?

#include <stdio.h>
int a = 100;//全局变量
int main()
{
    int a = 10;//局部变量
    printf("%d\n", a);
    return 0;
}

运行结果
image.png

从运行结果来看,程序顺利执行,说明变量设置没有问题,但是是局部变量被执行了
总结:当局部变量和全局变量同名时,局部变量优先使用(戏称:就近原则)

变量的作用域和生命周期

作用域
作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
1.局部变量的作用域是变量所在的局部范围
2.全局变量的作用域是整个工程
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1.局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
2.全局变量的生命周期是:整个程序的生命周期

常量

C语言中的常量和变量的定义的形式有所差异
C语言中的常量分为以下几种:
字面常量
const修饰的常变量
#define定义的标识符常量
枚举常量

#include <stdio.h>
//举例
enum Sex
{
    MALE,
    FEMALE,
    SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
    //字面常量演示
    3.14;//字面常量
    1000;//字面常量

    //const修饰的常变量
    const float pai = 3.14f;//这里的pai是const修饰的常变量
    pai = 5.14;//pai是不能直接修改的!

    //#define的标识符常量演示
    #define MAX 100
    printf("MAX = %d\n", MAX);

    //枚举常量演示
    printf("%d\n", MALE);
    printf("%d\n", FEMALE);
    printf("%d\n", SECRET);
    //注意:枚举常量的默认是从0开始,依次向下递增1
    return 0;
}

注:
上面例子中的pai被称为const修饰的常变量,const修饰的常变量在C语言中只是在语法层面限制了变量pai不能被改变,但是pai本质上还是变量,所以叫常变量

字符串

"hello word.\n"

这种由双引号(Double Quote)引起来的一串字符成为字符串字面值(String Literal),或者简称字符串
注:字符串的结束标志是'\0'的转义字符
在计算字符串长度的时候'\0'是结束标志,不算作字符串内容

#include <stdio.h>

//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)

int main()
{
    char arr1[] = "bit";
    char arr2[] = {'b', 'i', 't'};
    char arr3[] = {'b', 'i', 't', '\0'};
    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;
}

但运行结果却是这样的
image.png

为什么会出现这种结果呢,这里就需要提及一下转义字符
转义字符顾名思义就是转变意思
下面举例一些转义字符:

转义字符 释义
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\' 用于表示字符常量'
\“ 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符
\a 警告字符,蜂鸣
\b 退格符
\f 进制符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制的数字。 如: \130 X
\xdd dd表示2个十六进制数字。 如: \x30 0

本篇只是大致介绍一下C语言的基础内容,其他比如if语句,for循环语句,函数等知识会在后面文章中一一提及。感兴趣的的小伙伴点点赞,点点关注,谢谢大家的阅读哦!!!
点点关注,后期不错过哦。😘
你们的鼓励就是我的动力,下一篇将会对分支、循环语句进行详细的讲解,欢迎下次继续阅读!!!😘😘😘

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
目录
相关文章
|
6月前
|
编译器 程序员 开发工具
c语言从入门到实战——在系统学习C语言之前所需要了解的知识
C语言是一种通用的、过程式的计算机编程语言,支持结构化编程、词汇变量作用域和递归等功能,其设计提供了低级别的存取权限,并且要求程序员管理所有的内存细节。C语言的基本构成包括数据类型(如整型、浮点型、字符型等)、运算符(如算术运算符、关系运算符、逻辑运算符等)、控制结构(如顺序结构、选择结构、循环结构等)以及函数等。此外,C语言还提供了指针的概念,这是其他许多编程语言所不具备的。指针是一个变量,其值为另一个变量的地址,通过指针可以间接访问和操作内存中的数据。C语言也支持数组、结构体、联合体等复合数据类型,以及文件操作、动态内存分配等高级功能。
130 0
|
6月前
|
C语言
C语言基础练习
C语言基础练习
28 0
|
C语言
C语言基础练习(3)
C语言基础练习(3)
77 2
|
6月前
|
存储 C语言 C++
0基础玩转C语言—初识C语言(上)
0基础玩转C语言—初识C语言(上)
|
6月前
|
存储 C语言
0基础玩转C语言—初识C语言(下)
0基础玩转C语言—初识C语言(下)
|
3月前
|
编译器 Linux C语言
C语言基础
C语言基础
41 0
|
5月前
|
JavaScript C语言
|
5月前
|
C语言
|
5月前
|
C语言
|
6月前
|
存储 算法 程序员
C语言:深入探索与实战应用
C语言:深入探索与实战应用
48 0