深入浅出C语言——C语言简介

article/2025/10/13 22:48:44

文章目录

  • 前言:
  • 一、C语言
  • 二、C语言程序案例
  • 三、数据类型
  • 四、变量和常量
  • 五、字符串
  • 六、转义字符
  • 七、注释
  • 八、选择语句
  • 九 、循环语句
  • 十、函数
  • 十一、 数组
  • 十二、操作符
  • 十三、常见关键字
  • 十四、定义常量和宏
  • 十五、指针
  • 十六、结构体

前言:

编程语言可以简单的理解为一种计算机和人都能识别的语言,一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地表达在不同情况下所应当采取的行动。从语言的发展史上来说:最开始只有低级语言,也就是常说的机器语言,例如二进制:101001。后来发展出来汇编语言,即第二代计算机语言,用一些容易理解和记忆的字母,单词来代替一个特定的指令,列如用“ADD”代表数字逻辑上的加减。从20世纪60年代开始使用第三代语言,这类语言通常称为高级语言。高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如流行的C、C++、C#、Java、Python等。


一、C语言

C语言的诞生

C语言诞生于美国的贝尔实验室,由丹尼斯·里奇根据肯尼斯·汤普森设计的B语言为基础发展而来,在它的主体设计完成后,汤普森和里奇用它完全对UNIX操作系统的重写,且随着UNIX的发展,C语言也得到了不断的完善。为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,诞生了第一个完备的C标准,简称“C89”,也就是“ANSI C”,截至2020年,最新的C语言标准为2018年6月发布的“C18”。

C语言的编译器

C语言的编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。推荐大家使用是微软公司的开发工具MSVC,下载连接Microsoft Visual Studio,它可以理解为它是一个编辑器+编译器+调试器,Visual Studio是最流行的Windows平台应用程序的集成开发环境。

C语言的应用

C语言是一门通用计算机编程语言,广泛应用于底层开发,底层开发可以理解成最接近于硬件的开发,是最基础最重要的开发。作为一门高级语言,C语言和其他面向对象的高级语言有着本质上差异,C语言是一门面向过程的计算机编程语言。


二、C语言程序案例

#include <stdio.h>
int main()
{printf("Hello World\n");return 0; 
}
  • 此段代码将会在屏幕上输出Hello World。
  • #include <stdio.h> 作用是在编译之前把程序需要使用的关于系统定义的函数printf()的一些信息文件stdio.h包含进来。
  • stdio是Standard input output的缩写,意味标准输入输出,“.h ”作为后缀的文件称为头文件,#include可以理解为引用,< >是标准格式,记住即可。
  • 这段代码的main函数是程序的入口,一个工程中main函数有且仅有一个。{ }也是固定格式,这点记住即可。
  • printf 是输出函数,是C语言的重要函数。当编译器遇到 printf( ) 函数时,如果没有找到 stdio.h 头文件,会发生编译错误。此外需要注意的是,printf 中的双引号和后面的分号必须是在英文输入法下,双引号内的字符串可以是英文,也可以是中文。
  • "Hello World\n" ,Hello World是要输出的内容,\n是转义字符,意味着换行。 return 0 代表程序正常退出。

三、数据类型

在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。数据类型决定了变量存储占用的空间,以及如何解释存储的位模式。如果说编程语言用来描述生活中的问题,那么存在这么多的数据类型,就是为了更加丰富的表达生活中的各种值。

常用的数据类型

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

每种数据类型在内存中所占用的大小

#include <stdio.h>
int main()
{printf("%u\n", sizeof(char));printf("%u\n", sizeof(short));printf("%u\n", sizeof(int));printf("%u\n", sizeof(long));printf("%u\n", sizeof(long long));printf("%u\n", sizeof(float));printf("%u\n", sizeof(double));printf("%u\n", sizeof(long double));return 0; 
}
类型存储大小
char1字节
unsigned char1字节
signed char1字节
int4字节
unsigned int4字节
short2字节
unsigned short2字节
long4字节
unsigned long4字节

sizeof 是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小。值得注意的是各种数据类型的存储大小与系统位数有关,但目前通用的以64位系统为主。另外C语言规定sizeof(long) >= sizeof(int)即可,一般sizeof(long)为4个字节。


计算机中数据存储的单位

字节是计算机中数据存储的单位,常见的存储单位主要有bit(位)、Byte(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)。一个bit可以存放一个 0/1数据,如果一个计算机的内存是 4GB,那么它能存放多少4×1024×1024×1024×8 个 0/1,这就是 4GB 内存条所能存储的数据。

它们换算关系如下:

  • 1Byte=8bit
  • 1KB=1024B
  • 1MB=1024KB
  • 1GB=1024MB

四、变量和常量

   生活中的有些值是不变的,比如:圆周率,性别,身份证号码,血型等等; 有些值是可变的,比如:年龄,体重,薪资。对于不变的值,C语言中用常量的概念来表示;对于变的值,在C语言中用变量来表示,变量其实只不过是程序可操作的存储区的名称。

变量的定义

在C语言中,定义变量的方式为类型+名称。变量的名称可以由字母、数字和下划线字符组成,它必须以字母或下划线开头,另外C语言对大小写敏感,所以大写字母和小写字母是不同的。

int age = 150;
float weight = 45.5f;
char ch = 'w';

变量的分类

  1. 全局变量
  2. 局部变量
#include <stdio.h>
int a = 2021;		//属于1.全局变量——定义在大括号的外部int main()
{int b = 2022;	//属于2.局部变量——定义在大括号的内部return 0; 
}
  • 在C语言中,放到大括号里面的都是局部变量,非main函数也符合这一规则。
  • 当局部变量和全局变量命名发生冲突的时候,采用局部优先原则

变量的作用域

作用域是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效的,而限定这个名字的可用性的代码范围就是这个名字的作用域。局部变量的作用域是变量所在的局部范围,而全局变量的作用域是整个工程,即使是跨文件使用,只需要使用extern 变量类型 变量名 来声明外部符号,就可以使用跨文件使用。简言之:一个变量哪里可以使用, 哪里就是他的作用域。

变量的生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。对于局部变量而言,局部变量的生命周期是从进入作用域开始,出作用域生命周期结束。对于全局变量而言,全局变量的生命周期就是是整个程序的的生命周期。

常量

  C语言中的常量是固定值,在程序执行期间不会改变,而且常量的值在定义后不能进行修改。C语言中的常量分为以下以下几种:

  1. 字面常量
  2. const 修饰的常变量
  3. #define 定义的标识符常量
  4. 枚举常量
#include <stdio.h>
//括号中的MALE,FEMALE,SECRET是枚举常量
enum Sex
{ MALE,FEMALE,
};//#define的标识符常量
#define MAX 100int main()
{//字面常量3.14;1000;//const 修饰的常变量const float pai = 3.14f;   //const是常属性的意思//pai = 5.14; 			   //const 修饰的常变量在C语言中只是在语法层面限制了变量 pai 不能直接被改变,但是 pai本质上还是一个变量的,所以叫常变量printf("max = %d\n", MAX);//枚举常量,枚举常量的默认是从0开始,依次向下递增1的enum Sex s = MALE;printf("%d\n", MALE);    //0printf("%d\n", FEMALE);  //1 return 0; 
}

五、字符串

C语言的内置类型只有字符类型,没有字符串类型。像"abc"这种由双引号引起来的一串字符称为字符串字面值,简称字符串。字符串的结束标志是字符串末尾隐藏的字符 '\0' ,在计算字符串的长度的时候,\0是结束标志,不算字符串的内容。

int main()
{char arr1[] = "hello";char arr2[] = {'h', 'e', 'l','l','o'};char arr3[] = {'h', 'e', 'l','l','o','\0'};printf("%s\n", arr1);	//hello  hello后面隐藏了一个\0printf("%s\n", arr2);	//hello烫烫烫烫 字符串的打印默认以\0结尾,print函数会到o会面的存储空间找\0,找到了才停止打印,hello后面跟着随机字符  printf("%s\n", arr3);	//hello  在字符数组结尾后面手动添加\0也可以停止打印return 0;
}

六、转义字符

转义字符就是转变原来的意思,简单来说就是在一些字符前加"\"使它具有其他意义。

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

八进制的130表示为十进制的88,在ASCII表中,88代表X。同理十六进制的30表示为十进制的48,在ASCII表中,48代表数字0。


七、注释

注释可以注释掉代码中有不需要的代码,更重要的是注释一些难懂的代码。C语言采用的注释风格为 /*xxxxxx*/,这样不能嵌套注释;C++采用的注释风格为 //xxxxxxxx,这样的注释可以注释一行也可以注释多行。实际开发中,二者岂可。


八、选择语句

C语言的选择语句允许程序在一组选项中选择一条特定的执行路径。C语言的选择语句分为两种,ifswitch语句。

if语句

if语句中可以包含else语句,表示在圆括号内的表达式值为零时,执行else后面的语句,其基本形式如下:

if (表达式) 语句 
else 语句

switch语句

在多条选择路径时,switch语句比if更易读,并且执行速度往往比较快。default表示上述情况都不匹配时的执行语句,default可有可无,且没有位置限制。

switch (表达式)
{case 常量表达式:多条语句...case 常量表达式:多条语句default:多条语句
}

九 、循环语句

C语言是一种结构化的程序设计语言,分为:顺序结构、选择结构、循环结构。 循环结构可以表示重复执行的代码,有3种常见的循环结构语句:

  • while语句
  • for语句
  • do…while语句

while语句

while(表达式)
{循环语句;
}

for循环语句

for(初始化表达式;判断表达式;递增(递减)表达式)
{执行语句
}

do…while()循环

do循环语句;
while(表达式);

十、函数

函数是一组一起执行一个任务的语句。函数的声明告诉编译器函数的名称、返回类型和参数,函数的定义提供了函数的实际主体。函数的特点就是简化代码,代码复用。

int Add(int x, int y) 
{int z = x+y;return z; 
}

十一、 数组

C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组元素在内存中连续存储,最低的地址对应第一个元素,最高的地址对应最后一个元素。

数组的定义

在 C语言中要声明一个数组,需要指定元素的类型和元素的数量。定义数组元素的数量必须采用常量,而不能采用变量,但是C99标准后支持可变长度数组。

int arr[10] = {1,2,3,4,5,6,7,8,9,10};
//定义一个整形数组,最多放10个元素

数组的下标

C语言规定,数组的每个元素都有一个下标,下标是从0开始的。数组元素可以通过下标来访问的。int arr[10] = {0} ; 如果数组10个元素,下标的范围是0~9。


十二、操作符

操作符是一种告诉编译器执行特定的数学或逻辑操作的符号。

名称分类
算术操作符+ - * / %
移位操作符>> <<
位操作符& ^ |
赋值操作符= += -= *= /= &= ^=
单目操作符!- + & * sizeof ~ - - + + (类型)
关系操作符> >= < <= ! = ==
逻辑操作符&& ||
条件操作符exp1 ? exp2 : exp3
逗号表达式exp1, exp2, exp3, …expN
下标引用、函数调用和结构成员[] () . ->

十三、常见关键字

C语言提供了丰富的关键字,这些关键字是C语言本身预先设定好的,用户不能自己创建关键字。常见的关键字如下所示:

auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

关键字 typedef

C 语言提供了 typedef 关键字,typedef 顾名思义是类型重命名,可以使用它来为类型取一个新的名字,类似于起外号。

//将unsigned int 重命名为uint, 所以uint也是一个类型名
typedef unsigned int uint;
int main()
{unsigned int num1 = 0;uint num2 = 0;	//num1和num2,这两个变量的类型是一样的return 0; 
}

关键字static

在C语言中,static关键字用来修饰变量和函数static修饰局部变量,实际上改变了变量的存储位置,本来一个局部变量是放在栈区,被static修饰后放在了静态区。导致出了作用域,此静态局部变量仍然此存在,该静态局部变量的生命周期变长而作用域并没有发生变化。直到到程序结束,生命周期才结束。内存可以分为栈区、堆区、静态区,如下图所示:

在这里插入图片描述

static修饰全局变量,一个全局变量本来可以用extern这个关键字来声明外部符号,具有外部链接属性,但是当这个全局变量被static修饰后,外部链接属性就变成了内部链接属性,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。

static修饰函数一个函数本来是具有外部链接属性的,但是被static修饰后,外部链接属性变成了内部链接属性。一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。


十四、定义常量和宏

在预处理阶段,类似define定义的这种M符号会被替换成它的内容100,M没有类型,根据他的赋值什么都有可能。#define定义宏,类似函数来使用。

#define M 100
#define MAX(x,y) ((x)>(y)?(x):(y))

十五、指针

内存

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的。为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。同时为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。在32位机器下,有32根地址线,通过电信号转化为数字信号,每一根地址线可以表示一个占1个字节的内存单元,而32根地址线可以表示为2^32字节的内存空间,也就是4GB。

指针

每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符来访问的地址,它表示了在内存中的一个地址。指针也称为指针变量是用来存放内存地址的变量。如下代码表示定义一个变量命名为num,赋值为10。再定义一个指针变量p,将num的地址赋给它,这个时候我们通过取地址符号*加上指针变量p就可以访问num,来改变他的数值,打印出来为20。

int main()
{int num = 10;	// *说明p是一个指针对象;int说明p指向的对象是int类型int* p = &num;  // p是用来存放地址(指针)的,所以把p叫做指针变量*p = 20;        // *在这里叫解引用操作符,意思是通过p中存放的地址,找到p指向的内容printf("%d\n", num);return 0;
}

指针变量的大小

指针变量的大小取决于地址的大小,指针大小在32位平台是4个字节64位平台是8个字节

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

十六、结构体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。结构体是 C 语言中一种用户自定义的可用的数据类型,它允许存储不同类型的数据项。比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。

// 结构体类型
typedef struct Stu
{char name[20];//名字-字符串int age;      //年龄 - 整数char sex[5];  //性别 - 字符串char id[20];  //学号 - 字符串
}Stu;void Print(struct Stu* ps)
{//printf("%s %d %s %s\n", (*ps).name, (*ps).age, (*ps).sex, (*ps).id);printf("%s %d %s %s\n", ps->name, ps->age, ps->sex, ps->id);//-> 结构成员访问操作符//结构体指针->结构体成员
}int main()
{//结构体变量struct Stu s1 = {"张三", 18, "男", "2021060701"};//学生1struct Stu s2 = {"如花", 45, "女", "2021060702"};//学生2Stu s3 = {0}; 		//在这里给0和NULL都可以//输入结构体数据scanf("%s %d %s %s", s1.name, &(s1.age), s1.sex, s1.id);//直接打印的printf("%s %d %s %s\n", s1.name, s1.age, s1.sex, s1.id);//. 结构成员访问操作符//结构体变量.结构体成员//使用函数打印Print(&s2);return 0;
}


http://chatgpt.dhexx.cn/article/B3I8jSNU.shtml

相关文章

C语言的简介

目录 C语言 简介发展历史语言特点 C语言 C语言是一门面向过程的、抽象化的通用程序设计语言&#xff0c;广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了…

C语言入门介绍

哈喽大家好&#xff0c;我是一个刚刚入门的萌新&#xff0c;刚刚接触C语言&#xff0c;从今天开始&#xff0c;我会不定期更新博客&#xff0c;一方面呢是为了和我一样的初学者提供一个交流&#xff08;吐槽~&#xff09;和学习的平台&#xff0c;另一方面呢是为了给自己学习和…

一、C语言简介

学习目标&#xff1a;完成对C语言大致的了解 1、概述 C语言是一种结构化的面向过程的程序设计语言&#xff0c;同时具有高级语言与汇编语言的特点。 2、程序设计语言 程序设计语言即用于书写计算机程序的语言。计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言三个…

(一)C语言概述

本篇介绍C语言起源、编译、存储层次。 诞生特点编译存储层次 诞生 简单介绍 C语言诞生于美国的贝尔实验室&#xff0c;由D.M.Ritchie以B语言为基础发展而来&#xff0c;在它的主体设计完成后&#xff0c;Thompson和Ritchie用它完全重写了UNIX&#xff0c;且随着UNIX的发展&…

C语言的概述

1、计算机与程序设计的关系 计算机的本质是程序的机器&#xff0c;程序和指令是计算机系统中最基本的概念。 程序语言设计的产生是为了克服繁琐难记的二进制语言代码。 2.C语言程序的特点 优点&#xff1a;①语言简洁、紧凑&#xff1b;使用方便&#xff0c;灵活性高。 ②运算…

【C语言】C语言的简介

计算机只能直接识别和处理二进制码&#xff0c;C语言是一种能够让人类跟计算机交流的语言。 代码演示&#xff1a; #include <stdio.h>/*预处理命令*/int main()/*主函数*/ {/*函数体开始*/printf("This is a C program.\n");//调用标准库函数printf 完成显示…

C 语言简介

一.发展 C语言是一种强大的专业化编程语言&#xff0c; C语言的原型是A语言&#xff08;ALGOL 60语言&#xff09;。 1963年&#xff0c;剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。 1967年&#xff0c;剑桥大学的Matin Richards 对CPL语言进行…

C++语言简介

C语言的发展简史 C是由贝尔实验室1979年在C语言的基础上开发成功的。C兼容C语言&#xff0c;用C语言写的程序基本上可以不加修改地用于CC对C的“增强”表现在两个方面&#xff1a; &#xff08;1&#xff09;在原来面向过程的机制基础上&#xff0c;增强了C语言对类型的处理。 …

C语言(一):C语言概述介绍

目录 1.1 什么是C语言 1.2 计算机介绍 1.2.1 计算机结构组成 1.2.2 计算机系统组成 1.2.3 程序和指令 1.3 语言发展历程 1.3.1 机器语言 1.3.2 汇编语言和编译器 1.3.3 高级语言 1.3.4 语言的层次 1.3.5 语言进化史 1.4 为什么要学习C语言 1.4.1 C语言特点 1) 优…

C语言知识简介

一、什么是C语言 C语言是一门通用计算机编程语言&#xff0c;广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 二、第一个C语言程序 #include<stdio.h> …

如何建设数据指标体系?

前言 指标&#xff0c;只要做业务或者做数据&#xff0c;没有不知道的。但是&#xff0c;近年来&#xff0c;随着数据中台推出&#xff0c;数据标签、用户画像等时髦热词涌现&#xff0c;突然间&#xff0c;人们不太讲指标了&#xff0c;仿佛一切又都变成只要有标签就万事搞定…

互联网业务数据指标体系

互联网业务数据分析&#x1f370; Chap1 数据指标体系与建模方法&#x1f388; 一、常用的数据指标 数据可以分为三类&#xff1a;用户数据、行为数据、业务数据(描述业务本身的发展) 1.用户数据 1.1 DAU MAU DAU&#xff08;Daily Active User&#xff09;&#xff1a;单日…

数据指标体系

数据指标体系 指标与指标体系定义&#xff08;What&#xff09;搭建指标体系的背景与意义&#xff08;Why&#xff09;如何搭建指标体系&#xff08;How&#xff09;零售电商行业指标体系互联网行业指标体系 指标与指标体系定义&#xff08;What&#xff09; 指标是对业务的描…

数据分析——如何构建数据指标体系

文章转自 数据指标体系搭建实践 1. 什么是数据指标 指标&#xff0c;是反映某种事物或现象&#xff0c;描述在一定时间和条件下的规模、程度、比例、结构等概念&#xff0c;通常由指标名称和指标数值组成。 2. 为什么要搭建指标体系 例如&#xff0c;在实际场景中&#xff…

【业务数据分析】——常见业务指标

&#x1f935;‍♂️ 个人主页&#xff1a;Lingxw_w的个人主页 ✍&#x1f3fb;作者简介&#xff1a;计算机科学与技术研究生在读 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4a…

【数据分析】数据指标

目录 什么是好的数据指标&#xff1f; 找出正确的数据指标的五点方法 1、定性指标与量化指标 2、虚荣指标与可付诸行动的指标 3、探索性指标与报告性指标 4、先见性指标与后见性指标 5、相关性指标与因果性指标 市场细分、同期群分析、AB测试和多变量分析 市场细分 同期群分析 …

什么是数据指标体系?

一.概况 1.定义 对当前业务有参考价值的统计数据 2.作用 监控业务情况 通过拆解指标寻找当前业务问题 评估业务可改进的地方&#xff0c;找出下一步工作的方向 3.常用数据指标 谁&#xff1a;用户数据 干了什么&#xff1a;行为数据 结果怎样&#xff1a;业务数据 二…

【数据分析】—— 指标与指标体系

01 指标与指标体系 指标&#xff1a;从社会科学角度看&#xff0c;指标是统计学的范畴&#xff0c;将说明总体数量特征的概念称为指标。传统的指标有国内生产总值&#xff08;Gross Domestic Product&#xff0c;GDP&#xff09;、国民生产总值&#xff08;Gross National Pro…

国家统计局指标数据深入分析

国家统计局指标数据深入分析 统计局指标数据结构分析国家统计局数据集行政区划指标数据常见指标id如何从统计局网站获取指标ID查询示例 开始查询 国家统计局的数据给许多人的工作和学习提供了丰富且权威的数据。但提供的数据获取方式不尽如人意&#xff0c;因此在网上能找到各种…

数据指标管理

什么是指标&#xff1f; 指标是将业务单元精分和量化后的度量值&#xff0c;使得业务目标可描述、可度量、可拆解。数据指标构成如下: 数据指标体系是对业务指标体系的汇总&#xff0c;用来明确指标的口径、维度、指标的取数逻辑等信息。它的价值体现在&#xff1a; 全面支撑…