【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,需要的可以去自行下载,如果文章和代码中存在错误或者理解不到位的地方,欢迎大家指出交流,共同学习进步。

相关推荐
吃好睡好便好1 小时前
MATLAB中图像的线性变换
开发语言·图像处理·学习·计算机视觉·matlab
charlie1145141911 小时前
Cinux —— 给物理内存建账本:bitmap 物理内存管理器
开发语言·c++·操作系统·开源项目
ShiXZ2132 小时前
Java 8 Stream API 实用技巧详解:从入门到精通
java·开发语言
回眸不遇2 小时前
将 Docker虚拟磁盘文件ext.vhdx迁移出C盘 ,更换到D盘
c语言·docker·容器
冻柠檬飞冰走茶2 小时前
PTA基础编程题目集 7-27 冒泡法排序(C语言实现)
c语言·开发语言·数据结构·算法
听雨入夜2 小时前
“同声传译”还是“全文翻译”?为何HotSpot虚拟机仍要保留解释器?
开发语言·python
随风M记忆s2 小时前
GEE&Python-demo:利用Sentinel-监测北京奥林匹克森林公园年NDVI变化(附Python版)
开发语言·python·sentinel
C++、Java和Python的菜鸟2 小时前
第9章 后端Web进阶(AOP)
java·开发语言·前端
软萌萌的12 小时前
Python零基础从入门到精通详细教程-数据类型
开发语言·windows·python