学习打卡DAY1:C语言常见概念

一、什么是C语言?

C语言是一种通用的高级编程语言,最初由美国计算机科学家Dennis Ritchie于1972年在贝尔实验室开发。C语言被广泛应用于系统编程、应用程序开发和嵌入式系统开发等领域。C语言简洁高效、可移植、易于学习和使用,是很多其他高级语言的基础。C语言具有丰富的数据类型、运算符和语句结构,支持面向过程面向对象的编程风格。C语言程序可以在各种操作系统和硬件平台上编译和运行。

二、编译和链接

C语言是⼀门编译型计算机语⾔,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编译器翻译和链接器的链接,生成⼆进制的可执行文件,可执行文件才能执行。C语言代码是放在.c为后缀的文件中的,要得到最终运行的可执行程序,需要经过编译链接两个阶段。

一个计算机工程往往都是由多个源文件组成,这些源文件(.c)首先需要经过编译器处理生成对应的目标文件(.obj为后缀的文件),生成的多个目标文件再经过链接器生成对应的可执行程序(.exe),这就是在Windows电脑上C语言程序生成exe可执行文件的过程。

三、源文件和头文件

C语言中把.c为后缀的文件称为源文件,把.h为后缀的文件称为头文件。

四、main函数

每个C语言程序无论有多少行代码,都是从main函数开始执行的,main函数是程序的入口,main函数也被叫做:主函数。main前面的int表示main函数执行结束的时候返回一个整数型的值。所以,在main函数的最后写return 0;正好前后呼应。

  1. main函数是程序的入口。
  2. main函数有且仅有一个。
  3. 即使一个项目中有多个.c文件,但是只能有一个main函数。

五、printf函数和库函数

printf是一个库函数,它的功能是在标准输出设备上进行信息的打印。

int n=100
printf("%d\n",n);     //printf打印整型
printf("%c\n",'q');     //printf打印字符
printf("%lf\n",3.14);   //printf打印双精度浮点型

这里的%d,%c等是占位符,会被后边的值替换。

库函数,也称为函数库或系统函数,是一个预先编写的程序,包含大量常用的、通用的、可重用的函数。它们被编写为可被多个程序共享和调用的代码段。库函数通常包含在标准库中,是编程语言的一部分。程序员可以使用库函数来实现某些常见的任务,从而减少编写代码的工作量,并提高代码的可读性和可维护性。一些常见的库函数包括字符串处理、数学计算、时间处理和文件操作等。

一个系列的库函数一般会声明在同一个头文件中,所以库函数的使用,要包含对应的头文件。比如:printf函数需要包含的是stdio.h这个头文件,具体的实现方法是:

#include<stdio.h>
int main()
{
	printf("hello\n");
		return 0;
}

六、关键字

C语言中有一批保留的名字的符号,比如:int、if、return,这些符号被称为保留字或着关键字。

  1. 关键字都有特殊的含义,是保留给C语言使用的。
  2. 程序员自己在创建标识符的时候是不能和关键字重复的。
  3. 关键字也是不能自己创建的。

C语言一共有32个关键字,根据功能不同,可以分为以下四类:

数据类型关键字

char

声明字符型变量或函数(1字节)

short 

声明短整型变量和函数(2字节)

int

声明整型变量或函数(2/4字节)

long

声明长整型变量或函数(4/8字节)

float

声明浮点型变量或函数(4字节)

double

声明双精度变量或函数(8字节)

signed

声明有符号类型变量或函数

unsigned

声明无符号类型变量或函数

void

声明函数无返回值或无参数,声明无类型指针

enum

声明枚举类型

struct

声明结构体变量

union

声明共用体(联合)数据类型

控制语句关键字

for

一种循环语句

do

循环语句的循环体

while

循环语句的循环条件

break

跳出当前循环

continue

结束当前循环,开始下一轮循环

if

条件语句

else

条件语句否定分支(与if连用)

goto

无条件跳转语句

switch

用于开关语句

case

开关语句分支

default

开关语句中的其他分支

return

子程序返回语句(可以带参数,也可以不带参数)

存储类型关键字

auto

声明自动变量

extern

声明全局变量

register

声明寄存器变量

static

声明静态变量

其他功能关键字

const

声明只读变量

sizeof

计算存储空间

typedef

给数据类型取别名

volatile

说明变量在程序执行中可被隐含的改变

七、字符和ASCII编码

在C语言中,字符是指单个字符或者字母,包括数字、字母、符号和控制字符等。在C语言中,字符变量使用char类型来定义,每个字符变量占用1个字节的存储空间,使用ASCII码来表示不同的字符。字符可以作为单独的数据类型使用,也可以作为字符串的组成部分使用。在C语言中,字符是用单引号括起来的,如:'a','b','@'。

ASCII编码(American Standard Code for Information Interchange),即美国信息交换标准代码,是一种用来将字符转换为数字的编码系统。它由美国标准化协会(ANSI)制定并于1963年发布,最初只包含128个字符,其中包括大写和小写字母、数字、标点符号和控制字符等。

ASCII编码中每个字符都被赋予了一个唯一的整数值,这些整数被称为ASCII码。例如,大写字母A的ASCII码是65,小写字母a的ASCII码是97,数字0的ASCII码是48,标点符号感叹号的ASCII码是33等等。在ASCII编码中,我们最好能掌握几组特殊的数据:

  1. 字符A~Z的ASCII码值是从65~90
  2. 字符a~z的ASCII码值是从97~122
  3. 对应的大小写字符的ASCII码值的差值是32
  4. 数字字符0~9的ASCII码值是从48~57
  5. 换行\n的ASCII值是:10
  6. 在这些字符中ASCII码值从0~31这32个字符是不可打印字符,无法打印在屏幕上观察

可打印字符展示:

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 32; i <= 127; i++)
	{
		printf("%c ", i);
		if (i % 16 == 15)
			printf("\n");
	}
	return 0;
}

ASCII码表
二进制十进制十六进制字符/缩写解释
00000000000NUL (NULL)空字符
00000001101SOH (Start Of Headling)标题开始
00000010202STX (Start Of Text)正文开始
00000011303ETX (End Of Text)正文结束
00000100404EOT (End Of Transmission)传输结束
00000101505ENQ (Enquiry)请求
00000110606ACK (Acknowledge)回应/响应/收到通知
00000111707BEL (Bell)响铃
00001000808BS (Backspace)退格
00001001909HT (Horizontal Tab)水平制表符
00001010100ALF/NL(Line Feed/New Line)换行键
00001011110BVT (Vertical Tab)垂直制表符
00001100120CFF/NP (Form Feed/New Page)换页键
00001101130DCR (Carriage Return)回车键
00001110140ESO (Shift Out)不用切换
00001111150FSI (Shift In)启用切换
000100001610DLE (Data Link Escape)数据链路转义
000100011711DC1/XON
(Device Control 1/Transmission On)
设备控制1/传输开始
000100101812DC2 (Device Control 2)设备控制2
000100111913DC3/XOFF
(Device Control 3/Transmission Off)
设备控制3/传输中断
000101002014DC4 (Device Control 4)设备控制4
000101012115NAK (Negative Acknowledge)无响应/非正常响应/拒绝接收
000101102216SYN (Synchronous Idle)同步空闲
000101112317ETB (End of Transmission Block)传输块结束/块传输终止
000110002418CAN (Cancel)取消
000110012519EM (End of Medium)已到介质末端/介质存储已满/介质中断
00011010261ASUB (Substitute)替补/替换
00011011271BESC (Escape)逃离/取消
00011100281CFS (File Separator)文件分割符
00011101291DGS (Group Separator)组分隔符/分组符
00011110301ERS (Record Separator)记录分离符
00011111311FUS (Unit Separator)单元分隔符
001000003220(Space)空格
001000013321!
001000103422"
001000113523#
001001003624$
001001013725%
001001103826&
001001113927'
001010004028(
001010014129)
00101010422A*
00101011432B+
00101100442C,
00101101452D-
00101110462E.
00101111472F/
0011000048300
0011000149311
0011001050322
0011001151333
0011010052344
0011010153355
0011011054366
0011011155377
0011100056388
0011100157399
00111010583A:
00111011593B;
00111100603C<
00111101613D=
00111110623E>
00111111633F?
010000006440@
010000016541A
010000106642B
010000116743C
010001006844D
010001016945E
010001107046F
010001117147G
010010007248H
010010017349I
01001010744AJ
01001011754BK
01001100764CL
01001101774DM
01001110784EN
01001111794FO
010100008050P
010100018151Q
010100108252R
010100118353S
010101008454T
010101018555U
010101108656V
010101118757W
010110008858X
010110018959Y
01011010905AZ
01011011915B[
01011100925C\
01011101935D]
01011110945E^
01011111955F_
011000009660`
011000019761a
011000109862b
011000119963c
0110010010064d
0110010110165e
0110011010266f
0110011110367g
0110100010468h
0110100110569i
011010101066Aj
011010111076Bk
011011001086Cl
011011011096Dm
011011101106En
011011111116Fo
0111000011270p
0111000111371q
0111001011472r
0111001111573s
0111010011674t
0111010111775u
0111011011876v
0111011111977w
0111100012078x
0111100112179y
011110101227Az
011110111237B{
011111001247C|
011111011257D}
011111101267E~
011111111277FDEL (Delete)删除

八、字符串和\0

在C语言中,字符串被表示为字符数组,以空字符('\0')作为结尾的一串字符。例如,以下代码表示一个包含 "Hello World" 的字符串:

char str[] = "Hello World";

也可以使用另一种方式来初始化字符串:

char str[12];
strcpy(str, "Hello World");

在这个例子中,我们首先定义了一个长度为12的字符数组,然后使用strcpy()函数将字符串 "Hello World" 复制到该数组中。在这两种情况下,字符串都使用了双引号("")来标识。

C语言字符串中一个特殊的知识,就是在字符串的末尾隐藏放着一个\0字符,这个\0字符是字符串的结束标志。

九、转义字符

转义序列描述表示
简单转义序列
\'单引号ASCII 编码中为字节 0x27
\"双引号ASCII 编码中为字节 0x22
\?问号ASCII 编码中为字节 0x3f
\\反斜杠ASCII 编码中为字节 0x5c
\a响铃ASCII 编码中为字节 0x07
\b退格ASCII 编码中为字节 0x08
\f换页ASCII 编码中为字节 0x0c
\n换行ASCII 编码中为字节 0x0a
\r回车ASCII 编码中为字节 0x0d
\t水平制表ASCII 编码中为字节 0x09
\v垂直制表ASCII 编码中为字节 0x0b
数值转义序列
\nnn任意八进制值字节 nnn
\xnn任意十六进制值字节 nn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值