【c语言基础】C语言常见概念

目录

一、第一个c语言程序

二、关键字的介绍

三、字符和ASCII编码

四、字符串和\0

五、转义字符

六、语句和语句分类

[6.1 空语句](#6.1 空语句)

[6.2 表达式语句](#6.2 表达式语句)

[6.3 函数调用语句](#6.3 函数调用语句)

[6.4 复合语句](#6.4 复合语句)

[6.5 控制语句](#6.5 控制语句)

七、注释

[7.1 /**/ 的注释方式](#7.1 /**/ 的注释方式)

[7. 2 // 的注释方式](#7. 2 // 的注释方式)


一、第一个c语言程序

cpp 复制代码
#include<stdio.h> //这个是头文件

int main() //主函数
{

    printf("hello C\n"); 
    return 0 ; //退出当前函数,带回返回值

}

1、#include<stdio.h>

#include:预处理指令,作用:把后面文件里的代码 "导入" 到当前程序。

<stdio.h>:标准输入输出头文件

stdio = standard input output

2、int main()

main:主函数,C语言程序唯一入口。程序运行时系统自动从main开始执行。

int: 代表这个函数返回整数类型

然后一个程序只能有一个main函数,不然会报错。

3、{ }

大括号:函数体边界 所有属于main函数内部的代码,全部写在一对大括号里

4、printf("hello C\n");

printf():打印函数,向控制台打印文字

"hello C\n":字符串常量;\n是转义字符,表示换行

5、return 0 ;

return :退出当前函数,带回返回值。

0:返回的是整数(也就是程序正常跑完,没有错),非0程序运行发生异常,因为前面int main(),要求main必须返回整数。

主包我使用的是VS2026,在VS2026中运行代码的快捷键是:ctrl+F5

二、关键字的介绍

cs 复制代码
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

对于关键字的话,我们自己在创建标识符的时候是不能和关键字重复的,然后这些关键字也不是自己能创建的。是官方给好的的,注:https://zh.cppreference.com/w/c/keyword(C语⾔关键字的全部介绍)。

三、字符和ASCII编码

像我们在键盘上敲出来的字符,如a,b,!等等,都叫做字符, 然后c语言中字符是用单引号括起来的 ,如'a','b','!'。然后我们知道计算机中,所有的数据都是以二进制的形式存储的。后来为了标准化,将这些字符变成了**ASCII编码,**c语言就是使用ASCII编码。

这个出自:https://zh.cppreference.com/w/cpp/language/ascii

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

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

大小写字符的ASCII码的差值为32

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

然后0~31这32个字符是不可打印字符

cs 复制代码
#include<stdio.h>
int main()
{
    printf("%c\n",'Q');
    printf("%c\n",81);

    return 0 ;
}

其中,输出的'Q'和81的结果都是相同的,如下图所示。

其中,81是十进制的,因为在C语言中默认就是使用十进制 ,如果你还想使用八进制或者十六进制打印对应的"Q"的话,比如这张图,你就不能直接输入121或者51,会默认为十进制的121或51,而应该在八进制前面加上0,如"0121"在十六进制前面加上0x,如"0x51"。如下图所示。

当然,还可以使用**字符串内部转义写法,**在前面加上"\",如'\121'或'\x51',如下图所示。

四、字符串和\0

在c语言中,字符串要用双引号括起来的,如"Hello world",就是一个字符串,前面提到的''单引号是字符常量,只能表示单个字符如'\x51',像'AB'它就会报错。

其中,%s是字符串占位符,来接收"hello world"的。

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

char是字符类型,str\[\]是字符数组。如图所示,在末尾结束符 \0,我这个调试界面,需要在我代码第六行的那个位置打个断点,按ctrl+F10,然后再顶部菜单"调试-窗口-监视-监视1",在监视窗口输入变量名就可以了。

如图所示, char arr1\[\] = {'a','b','c'}数组大小只有3个字符,末尾没有自动添加 \0,就会导致乱码,而 char arr2\[\] = "abc" 只要你用**双引号""**包裹文字去初始化字符数组 / 字符指针,c语言编译器会自动在最后偷偷塞一个\0,就正常打印。

在其后面加上'\0'就能正常打印了,所以 \0 很重要,因为printf("%s")、strlen、strcpy这类字符串函数,全部依靠\0当作终止标记。如果没有这个标记,函数会继续往数组外面乱读内存,产生乱码。

五、转义字符

在前文中就提到了\n是转义字符,它是换行的意思。转义字符就是转变原来意思的字符,如下图一些常用的转义字符。

转义字符参考:https://zh.cppreference.com/w/c/language/escape

六、语句和语句分类

c语言的代码是由一条一条的语句构成的,c语言中的语句分为五类:

1、空语句

2、表达式语句

3、函数调用语句

4、复合语句

5、控制语句

6.1 空语句

空语句就是一个分号一条语句。

cs 复制代码
#include <stdio.h>
int main()
{
    ;//空语句
    return 0 ;
}

6.2 表达式语句

表达式+分号。

cs 复制代码
#include <stdio.h>
int main()
{

    int a = 1;
    a = 0;    //赋值表达式语句
    b = a + 5;//算术表达式语句
    a++;     //自增表达式语句
    return 0;
}

6.3 函数调用语句

函数调用的时候,也会加上分号,就是函数调⽤语句。

cs 复制代码
printf("hello");//printf就是函数,函数调用语句
scanf("%d", &a);//scanf也是函数

6.4 复合语句

用{ }包裹多条语句,整体看成一条语句。

cs 复制代码
{
    int x = 5;
    printf("%d", x);
}

6.5 控制语句

用来控制代码执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构)。C语言有九种控制语句,分为3大类:

1、条件判断也叫分支:if...else或if...else if...else、switch

2、循环:for、while、do...while

3、跳转或转向:break、continue、goto、return

七、注释

注释的作用是为了方便自己后面看得懂代码,以及让别人也看得懂代码。

7.1 /**/ 的注释方式

第一种方式是将注释放在/*..*/之间,内部也可以分行。方便在多行注释,以及代码编译中使用,如下所示。

cs 复制代码
#include <stdio.h>
int main()
{
    /* 单行注释 */
    printf("测试1\n");

    /*
    多行块注释
    printf("这行代码被注释,不会执行\n");
    */

    // 行内注释演示
    int num /* 存储数字 */ = 100;
    printf("%d\n", num);
    return 0;
}

7. 2 // 的注释方式

// 这种方式还是经常使用的一种方式,就将注释写在// 的后面,但是//后面的都会被注释掉。

对于这种方式有几种快捷键,我在使用ctrl + /,这也是python注释的快捷键;另一种就是ctrl+ k + c,然后取消注释是ctrl + k + c

8. 总结

这个是我入门C语言的第一节课,后面我也会持续更新,本文涉及的学习代码已同步上传至 Gitee 仓库:https://gitee.com/ZhiWeiCoder/student_c,大家可以关注我gitee,需要的可以去自行下载,如果文章和代码中存在错误或者理解不到位的地方,欢迎大家指出交流,共同学习进步。

相关推荐
shmily麻瓜小菜鸡17 分钟前
JS/TS 易踩坑知识点 — 模块化与工程化类
开发语言·javascript·ecmascript
geovindu29 分钟前
CSharp: Observer Pattern
开发语言·后端·观察者模式·设计模式·c#·.netcore·行为模式
郝学胜-神的一滴1 小时前
C++11 工程级应用 09:告别无谓拷贝,解锁高性能移动语义
开发语言·数据结构·c++·vscode·软件工程·visual studio
MC皮蛋侠客2 小时前
OPC UA 系列(一):标准全景与 Python 最小闭环——让第一条设备数据流动起来
开发语言·python·opcua
彧azz2 小时前
数据结构:关于图的学习
c语言·数据结构·笔记·学习·算法
SamChan903 小时前
PDF翻译后的格式完整性校验:用Python自动比对译文与原文档的表格与段落结构
开发语言·python·ai·pdf·机器翻译
君顾13 小时前
外卖CPS系统开发实战指南:从架构设计到部署全流程解析
java·开发语言·外卖
彧azz3 小时前
二叉搜索树学习记录
c语言·数据结构·笔记·算法
是立不是利3 小时前
前端交互基石:深入剖析JavaScript三级联动背后的设计哲学
开发语言·前端·javascript