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

简介: 基础认识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+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
目录
相关文章
|
2月前
|
机器学习/深度学习 算法 Apache
CEH特征引擎:重新定义实时视觉的“速度-精度”边界
CEH是首个在普通CPU上实现“高密度特征+高帧间匹配+亚像素精度”的全能特征引擎,速度超BRISK、效率领先SIFT一个数量级,零GPU依赖、零专利风险,纯C++开源,完美适配嵌入式与边缘设备。
352 49
|
29天前
|
人工智能 自然语言处理 安全
普通人也能用的 AI 自动化 OpenClaw 配置方法(附下载 + 问题解决)
OpenClaw(小龙虾AI)是2026年热门的本地化AI自动化工具,无需联网或账号,用自然语言即可实现键鼠控制、文件处理、浏览器操作等,大幅提升办公效率。Win11一键部署,全程自动安装,支持纯离线运行。
|
1月前
阿里云轻量应用服务器“无固定流量”是什么意思?不限制流量?流量随便用吗?
阿里云轻量应用服务器“无固定流量”即不限制月度流量,阿里云轻量应用服务器官方页面:https://t.aliyun.com/U/dwftch 目前轻量已升级至200Mbps峰值带宽,告别流量限制与超额费用,杜绝天价账单,畅用无忧。(239字)
136 1
|
2月前
|
人工智能 自然语言处理 安全
Windows 一键部署 OpenClaw 2.6.6 教程|5 分钟搞定本地 AI 智能体,告别复杂配置(技术分享喜欢点赞)
本文详解Windows一键部署OpenClaw 2.6.6(“小龙虾”)全流程:零代码、全可视化、内置依赖,5分钟搞定本地AI智能体。支持文件整理、浏览器自动化、微信联动等办公场景,附避坑指南与实操指令,小白友好,隐私安全有保障。
|
2月前
|
人工智能 自然语言处理 数据可视化
OpenClaw 2.6.6 Windows 一键安装部署教程(技术分享喜欢的可以看一下)
OpenClaw(小龙虾)是GitHub星标超28万的开源“数字员工”,支持Windows一键部署,5分钟零代码本地运行。无需配置环境,内置全部依赖,可自动执行文件整理、浏览器操作、邮件发送等任务,全程可视化,隐私安全不联网。
|
2月前
|
人工智能 小程序 前端开发
【AI开发实战】从想法到上线,我用AI全栈开发了一款记账微信小程序
「时光账记」是一款轻量智能的微信记账小程序——AI打造,免下载即用。支持多账本协作(家庭/旅行/装修)、周期自动记账、预算实时预警、节日倒计时与自定义背景,让记账有温度、有期待、不劝退。理财,从看清每一分钱开始。(239字)
349 0
【AI开发实战】从想法到上线,我用AI全栈开发了一款记账微信小程序
|
1月前
|
人工智能
GEO已经完蛋了?
DeepSeek R1 升级重击劣质GEO:百万级上下文+信源ABC分级,让水文、伪背书、关键词堆砌彻底失效。GEO未死,只是回归本质——用真实问题、可信信源、扎实内容赢得AI信任。正向GEO,才是AI时代的长期主义。(239字)
|
3月前
|
Java PHP 开发者
华山论剑:各大编程语言Web框架巅峰对决
本文全景式梳理主流编程语言的Web框架生态,从Java的Spring Boot/Quarkus、Python的Django/FastAPI、JS的Express/NestJS,到Go、Rust、C#、Kotlin等新兴势力,剖析其设计哲学、核心组件(路由、ORM、中间件)与适用场景,揭示技术选型背后的性能、开发效率与工程化权衡。(239字)
519 4
|
2月前
|
数据采集 监控 人机交互
人体部位细粒度检测数据集(7000张,5类)|YOLO训练数据集 人体检测 姿态分析 智能安防
本数据集含7000张高质量图像,涵盖人体、身体、头部、手部、脚部5类细粒度目标,YOLO标准格式,标注精准、场景多样、姿态丰富,专为人体部位检测、姿态分析与智能安防等任务优化,开箱即用,支持YOLOv5/v8快速训练。
|
3月前
|
机器学习/深度学习 存储 人工智能
横扫11项榜单SOTA:高性能、全尺寸、超高效的多语嵌入模型F2LLM-v2来了
F2LLM-v2问世,支持超200种语言,问鼎11项MTEB榜单,以全尺寸、全透明、全开源的姿态推动AI技术走向全球普惠。
459 0