C语言常见概念

embedded/2025/2/9 13:36:23/

目录

第一个C语言程序

main函数

写法:

printf和库函数

printf()函数

库函数

关键字

字符和ASCII码表

字符串和'\0'

转义字符

 语句

注释

注释的两种形式


第一个C语言程序

#include<stdio.h>//第一个c语言程序
int main()
{printf("Hello World!\n");return 0;
}

main函数

每一个C语言程序不管有多少行代码,都是从main函数开始执行,也就是说main函数是程序的入口

main函数也叫做主函数,C语言程序不能没有main函数,有且只有一个main函数

即使程序有多个.c文件,也是只有一个main函数

写法:

//1、
int main()
{return 0;
}//2、括号中的void表示main函数无参数
int main(void)
{return 0;
}//3、这种基本不会用到
//main函数其实是有参数的,不想使用的时候就可以不写,需要的时候就写上
int main(int agvc, char* argv[])
{return 0;
}

main前面的int表示main函数执行结束的返回值类型,suoyi会在main函数的最后写"return 0"

有很多初学者第一次在写代码时都会出现以下常见的错误:

1、main写成mian

2、main后面的()漏写了

3、代码中不能使用中文符号

4、每一条语句的结束后面都要有一个分号

printf和库函数

printf()函数

在我们写的第一个C语言程序中会出现这行代码

printf("Hello World!\n");

这行代码中使用到了printf()函数,实现了在屏幕上信息的打印

在这里printf()函数是一个库函数,它的功能就是在屏幕上打印信息,它的全名是:print formet(按照格式打印信息)

只要将要打印的字符串放在双引号中并传递给printf函数就可以打印了

注:在使用库函数的时候要在程序头部写出头文件

这里要用到的是

#include<stdio.h>

库函数

那应该有人会好奇什么是库函数呢?

为了不再重复实现常⻅的代码,让程序员提升开发效率,C语⾔标准规定了⼀组函数,这些函数再由不 同的编译器⼚商根据标准进⾏实现,提供给程序员使⽤。这些函数组成了⼀个函数库,被称为标准 库,这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数(这些函 数其他编译器不⼀定⽀持)。

⼀个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使⽤,要包含对应的头⽂件。

关键字

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

1、关键字都有特殊的意义,是保留给C语⾔使⽤的

2、程序员⾃⼰在创建标识符的时候是不能和关键字重复的

3、关键字也是不能⾃⼰创建的。

常用的32个关键字:

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

字符和ASCII码表

在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号括起来的,如:'a','b','@'。

我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C语⾔中的字符就遵循了 ASCII 编码的⽅式。

我们不需要将这张表完全背下来,要使用到的时候查看就行,但有些数据是会经常用到的可以好好掌握

1、字符A~Z的ASCII码值从65~90

2、字符a~z的ASCII码值从97~122

3、对应的⼤⼩写字符(a和A)的ASCII码值的差值是32

4、数字字符0~9的ASCII码值从48~57

5、换⾏ \n 的ASCII值是:10

6、在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,⽆法打印在屏幕上观察

打印部分字符(字符的打印要用到"%c"):

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

字符串和'\0'

在C语言中如何表示字符串呢?

使用双括号括起来的一串字符就称为字符串,如:"abcd"就是一个字符串

而字符就用单引号括起来,如'a','b'

字符串的打印格式就用"%s"

int main()
{printf("%s\n", "abcdef");return 0;
}

 以上面的代码中字符串为例,"abcdef"中看起来就只有6个字符,但他其实还隐藏了一个”\0“的转义字符,而''\0"是字符串结束的标志

那我们来如何证明"\0"是字符串的结束标志呢?

int main()
{char c1[] = "abcdef";char c2[] = { 'a','b','c','d','e','f' };printf("%s\n", c1);printf("%s\n", c2);return 0;
}

那为什么会出现这种情况呢?

根据这张调试图就可以知道 ,c1的字符串后面有一个'\0',而c2却没有

由此可知:c2中没有表明'\0'的位置,这就意味着打印完c2中的字符后,程序会继续执行,直到遇到一个随机的'\0',才会结束

那如果我们想用c2的形式打印正确的字符就需要将'\0'也输入进去

char c2[]={'a','b','c','d','e','f','\0'};

转义字符

在字符中有一堆特殊的字符就叫做转义字符,在前面我们所讲到的'\n'、'\0'就是转义字符

转义字符:顾名思义就是转变原来意思的字符

由上面的程序及运行结果可知,一个'n'在'\'的修饰后,意思就发生了变化,从一个不同的字符变为转定义为换行的意思

然而在C语言中许多转义字符:

\? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证

\' :⽤于表⽰字符常量'

\" :⽤于表⽰⼀个字符串内部的双引号

\\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符

\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣

\b :退格键,光标回退⼀个字符,但不删除字符

\n :换⾏符

\t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个4/8的倍数

\ddd :d d d表⽰1~3个⼋进制的数字

\xdd :d d表⽰2个⼗六进制数字

\t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个4/8的倍数

 

 \ddd :d d d表⽰1~3个⼋进制的数字,如:'\130'=1*8^2+3*8^1+0*8^0=88=X

根据这个转义字符可知,'\0'其实就是它的一种,是null字符,表示无内容

在字符串printf()打印或用strlen()计算字符串长度时,遇到'\0'就停止

\xdd :d d表⽰2个⼗六进制数字,如:'\x30'=3*16^1+0*16^0=48=0

注:

转义字符也是字符的一种,所以在计算字符串长度的是会算做一个字符

 语句

C语言的代码是由一条一条语句组成,而C语言中语句可以分为以下五类:

1、空语句

2、表达式语句

3、函数调用语句

4、复用语句

5、控制语句

空语句:这种是最简单,一个分号就是一条语句,就是空语句 

int main()
{;return 0;
}

空语句的使用场景:一般是出现在这个地方需要一条语句,而这个语句不需要做任何事情,就可以在这里写一条空语句

表达式语句:就是在表达式后面加上分号

int main()
{int a=1,b=2;a=b+1;return 0;
}

函数调用语句:在函数调用的时候,也会在后面加上分号,那这就是函数调用语句

#include <stdio.h>int Add(int x, int y)
{return x+y;
}int main()
{printf("hehe\n");//函数调⽤语句int ret = Add(2, 3);//函数调⽤语句 return 0;
}

复合语句:就是前面讲过的代码块,成对括号中的代码就构成一个代码块,也被称为复合函数

#include<stdio.h>
void print(int arr[], int sz) //函数的⼤括号中的代码也构成复合语句
{int i = 0;for(i=0; i<sz; i++){printf("%d ", arr[i]);}
}
int main()
{int i = 0;int arr[10] = {0};for(i=0; i<10; i++) //for循环的循环体的⼤括号中的就是复合语句{arr[i] = 10-i;printf("%d\n", arr[i]);}return 0;
}

控制语句:该语句用于控制程序的执行流程,以实现程序的各种结构方式(C语⾔⽀持三种结构:顺序结构、选 择结构、循环结构),它们由特定的语句定义符组成,C语有九种控制语句。

可分成以下三类:

1. 条件判断语句也叫分⽀语句:if语句、switch语句;

2. 循环执⾏语句:do while语句、while语句、for语句;

3. 转向语句:break语句、goto语句、continue语句、return语句。

这里就不多缀叙,后面的文章会讲解到

注释

注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。

注释的两种形式

1、/**/

2、//

注:

在程序编译时,注释会被替换成一个空格,这就是/**/这种注释方式可以在插在行内

两种方式都不能放在双引号中,放在双引号中会变成字符串的一部分,解释为普通符号,失去注释作用 


http://www.ppmy.cn/embedded/160831.html

相关文章

三星OEM版SSD固态硬盘Model码对应关系

860pro对应的工版型号是SM883&#xff08;Model码&#xff1a;MZ-7KH&#xff09;&#xff0c; 850pro对应的工版型号是SM863A或SM863&#xff08;Model码&#xff1a;MZ-7KM&#xff09;, 2D-mlc熟悉的零售也是两款840pro&#xff08;20nm&#xff09;和830&#xff0c;840p…

数据结构和算法

了解您的需求&#xff0c;我将为您提供一个详细解释&#xff0c;涵盖您提供的面试题列表中的所有问题&#xff0c;字数超过3000字。 数据结构 了解哪些数据结构&#xff1f; 数据结构是计算机科学中的一个基本概念&#xff0c;用于组织和存储数据。常见的数据结构包括&#…

CASAIM与马来西亚 Perodua汽车达成合作,共推汽车制造质量升级

近期&#xff0c;CASAIM与马来西亚知名汽车制造商 Perodua 正式达成合作&#xff0c;将先进的自动化蓝光三维检测技术深度融入Perodua汽车的生产制造流程&#xff0c;全面提升汽车零部件及整车的质量检测精度与效率&#xff0c;为汽车行业的高质量发展树立新的标杆。 Perodua是…

SQL Server 数据库迁移到 MySQL 的完整指南

文章目录 引言一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据 二、迁移工具的选择2.1 使用 MySQL Workbench2.2 使用第三方工具2.3 手动迁移 三、迁移步骤3.1 导出 SQL Server 数据库结构3.2 转换数据类型和语法3.3 导入 MySQL 数据库3.4 迁移数据3.5 迁移存…

《Origin画百图》之边际分布曲线图

《Origin画百图》第六集——边际分布曲线图 入门操作可看《30秒&#xff0c;带你入门Origin》 边际分布曲线图&#xff0c;其中包含散点图形&#xff0c;而在图的边际有着分布曲线图。在比较数据以查看多个变量之间是否存在关系时非常有用。 1.数据准备&#xff1a;为多列XY数…

Python设计模式 - 原型模式

定义 原型模式是一种创建型设计模式&#xff0c;它可以通过复制现有对象来创建新对象&#xff0c;而不是直接实例化新的对象。 结构 抽象原型&#xff08;Prototype&#xff09;&#xff1a;声明 clone() 方法&#xff0c;以便派生类实现克隆自身的能力。具体原型&#xff08…

设计模式——策略模式

设计模式——策略模式 简单介绍一个例子 策略模式是设计模式里面比较简单的设计模式&#xff0c;其特点简单又实用&#xff0c;并且可以让你的代码看起来高大上&#xff0c;维护代码时还方便扩张 多重条件语句不易维护&#xff0c;而使用策略模式可以避免使用多重条件语句&…

DeepSeek MLA

DeepSeek MLA 框架概述 1.1 定义与背景 DeepSeek 是一家专注于人工智能技术的公司&#xff0c;其开发的 MLA&#xff08;Multi-Head Latent Attention&#xff09;框架是 DeepSeek-V3 模型中用于高效推理的核心注意力机制。MLA 通过低秩联合压缩技术&#xff0c;减少了推理时的…