首页 > 其他分享 >C入门语言看这篇就够了,教你快速上手C语言

C入门语言看这篇就够了,教你快速上手C语言

时间:2023-09-12 21:02:09浏览次数:36  
标签:字符 入门 int 这篇 C语言 注释 printf 字符串

(章节目录)

在这里插入图片描述

前言

  哈喽,各位铁汁们好啊!✨今天来给大家带来的是初识C语言里面的转义字符注释。   《入门C语言篇》主要带大家简单认识-一下C语言,俗话说没吃过猪肉,也见过猪跑。带大家了解下C语言。可以读懂C语言的简单程序,后面博主会给大家出《C语言初级》加进阶知识,逐渐走上编程之路。

一、字符串的概念

什么是字符串? "hello bit.\n"

这种由双引号(Double Quote)引起来的一串字符称为字 符串字面值(String Literal),或者简称字符串。

  • 注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志, 不算作字符串内容。

这里可能有些同学会问了怎么知道字符串是\0,为结束标志的呢? 我们来看一下下面这段代码:

int main()
{
	//"abcdef";
	//char ch1 = 'a';
	//char ch2 = 'b';
	//char ch3 = 'c';
	char arr[]="abcdef";
	return 0;
}

大家看我们想存储字符串“abcdef”该怎么存储呢?

  • 我相信各位宝子们第一个想到肯定是说,博主那不是很简单吗?
  • 直接用字符类型变量然后一个个输出不就完了,有什么难的。

<font color="#dd0000"> 可是大家想这样是不是太麻烦了,然后每一个字符串都这样存储,那么200个字符的字符串我们岂不是要定义200个字符变量 </font><br />

那怎么办呢?这里给大家简单讲一下字符数组的概念: 前说了如果字符串里面字符元素过多,我们就不好用字符变量来存储了。 而数组刚好可以解决我们这个问题。

  • <font color="#dd00dd">数组是相同类型元素的集合</font>
  • <font color="#dd00dd">那么我们把数组定义成字符类型的元素不就行了</font>
int main()
{
	char ch[] = {'a', 'b', 'c', 'd', 'e', 'f'};
	char ch2[] = "abcdef";
	return 0;
}

大家可以看到这里使用了,俩总方式来初始化字符类型的数组

  • 第一种:单个字符存储到字符类型的数组里面。
  • 第二种:以字符串直接,存储到字符类型的数组里面。

我们用***VS2022***来观察一下俩个字符数组存储的有什么区别。 在这里插入图片描述 这里是不是可以看到直接存储字符串进去末尾带带了一个\0

  • 说明了字符串是以\0为结尾的。
  • \0是字符串结束的标志
验证字符串后面的斜杠0

前面一章变量这个章节,博主跟大家说了打印字符串用的是%s

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

注: 给大家解释一下printf这个函数 <kbd>printf以%s打印字符串的时候是</kbd> <kbd>从你给的地址一直向后打印,直到遇到\0</kbd> 所以我们来看一下区别

在这里插入图片描述 这里就可以看到由于字符数组 ch存储的是单个字符元素没有 \0 所以printf就在往后一直打印,直到到找到字符\0

  • 所以后面打印了一堆乱码
  • 而字符数组ch2,最后一个存储的是\0,所以打印到\0就不打印。

<font color = purple size=5px face = "楷体"> 再来用 <font color="#dd0000">$strlen$</font> 库函数来读取一下这俩字符数组的长度</font> 注: 给大家解释一下$strlen$这个函数 <kbd>用的时候要引用头文件</kbd><kbd>#include <string.h></kbd> <kbd>从你给的地址一直向后计数直到遇到\0结束</kbd>

#include <stdio.h>
int main()
{
	char ch[] = {'a', 'b', 'c', 'd', 'e', 'f'};
	char ch2[] = "abcdef";

	int len1 = strlen(ch);
	printf("%d\n", len1);

	int len2 = strlen(ch2);
	printf("%d\n", len2);

	return 0;
}

在这里插入图片描述 所以大家明白为什么输出的是这俩个,字符个数吧!

  • 因为字符数组ch,没有结束符号\0所以计算的字符长度是个随机值
  • ch2\0字符串,结束的标志。所以读取的字符个数是6

二、什么是转义字符

转义字符转义转义说明: 它的意思就是转变他原本的含义

废话不多说各位铁汁看代码。

//转义字符 - 转变原来意思
int main()
{
	printf("(are you ok\?\?)");
	//are you ok]
	//??) - 三字母词  --> ]
	return 0;
}

<kbd>printf("(are you ok??)");</kbd> 这个代码在以前的编译器中输出的结果是 <kbd>are you ok]</kbd>

为什么呢?因为

  • <kbd>??) </kbd>这3个符号组合在一起在以前的编译器会被认为是
  • ==三字母词== 意思就是把<kbd>??) </kbd>转变成<kbd>] </kbd>这个符号

<font color="#dd0000">再来看一组代码</font>

int main()
{
	printf("ab\ndef");
	return 0;
}

我们的本意是输出<kbd>ab\ndef</kbd>这串字符 可实际输出的却是 在这里插入图片描述

  • 这是因为 \ + n\n原本的含义该转变成换行符了
  • \n原本只是俩个字符 ==大家明白了没有== 那么可以用下面这段代码练习一下
  • 数一数有多少个字符
int main()
{
	printf("c:\\test\\test.c");
	return 0;
}

下面给大家看一下C语言的转义字符表 在这里插入图片描述

三、C语言中的不同注释

1. C语言中的注释风格

int main()
{
	/*
	* C语言注释风格 - 不支持注释嵌套
	* 下面代码是创建一个整型变量并赋值0
	*/
	int b = 0;
	printf("%d\n", strlen("abcdef"));
	return 0;
}
缺陷

一旦嵌套了他所对应的/*就不会和最近的 */ 匹配

/*int main()
{
	/*
	* C语言注释风格 - 不支持注释嵌套
	* 下面代码是创建一个整型变量并赋值0
	*/
	int b = 0;
	printf("%d\n", strlen("abcdef"));
	return 0;
}*/

大家看上面被注释了但是下面的*/匹配不上了

2. C++中的注释风格

int main()
{
	//以//开头的注释是属于C++注释风格
	
	//注释
	//strlen是一个库函数
	//计算的是\0之前出现的字符的个数
	//
	int b = 0;

	printf("%d\n", strlen("abcdef"));
	return 0;
}
  • ==C++的注释方法是支持嵌套的==
  • ==所以在代码段注释我们一般推荐这种==

总结

好了今天主要是带大家认识字符串转义字符注释 总结一下今天学了:   字符串   字符串的结束标志   转义字符   C语言的注释风格   C++的注释风格 不知道大家掌握了没有,希望对各位铁汁有用呢! 看到这里了还不给博主扣个点赞收藏

标签:字符,入门,int,这篇,C语言,注释,printf,字符串
From: https://blog.51cto.com/u_16163707/7448438

相关文章

  • Java入门
    java入手注释pvsmJava入口点程序逻辑中枢sout输出//单行注释/**/多行注释/**回车文档注释标识符注意事项标识符不能含关键字标识符需大小写字母开头或$与_开头标识符后可接大小写字母与$_和数字的任意组合标识符大小写敏感八大基本数据类型整数类型字节......
  • 简简单单教你如何用C语言实现获取当前所有可用网口!
    一、获取本机所有可用网卡名原理:在Linux系统中,/proc目录是一个位于内存中的伪文件系统。/proc目录是内核提供给我们的查询中心,通过查询该目录下的文件内容,可以获取到有关系统硬件及当前运行进程的信息,如CPU信息、负载信息、系统内存信息、磁盘IO信息等。其中文件:/proc......
  • Java入门
    java入手注释pvsmJava入口点程序逻辑中枢sout输出//单行注释/**/多行注释/**回车文档注释标识符注意事项标识符不能含关键字标识符需大小写字母开头或$与_开头标识符后可接大小写字母与$_和数字的任意组合标识符大小写敏感八大基本数据类型整数类型字节......
  • python版elasticsearch入门笔记
    Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。Elasticsearch的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再......
  • 电气工程师必学------CODESYS v3.5 入门学习笔记(一)
    一、新建工程打开软件新建工程,如图此教程只是入门练习,所以这里一般情况下都是创建的Standardproject,也就是标准工程。窗口下方可以设置工程名称与存放位置。紧接着是选择设备与编译语言。初学者条件有限就直接上仿真,电脑是windowsx64的话设备选择上图所示就OK。语言这里我......
  • bilibili B站:makefile 编译Linux C/C++项目快速入门
    视频摘自:https://www.bilibili.com/video/BV1vg41177zT    ......
  • UI设计怎么切图?初学者入门必读篇
    切图是开发无法使用代码直接实现的元素,是UI设计师的重要产出成果和交付物。切图看似简单,实则也有超级多的专业细节需要了解,以及各种方法来提高切图效率。本文将全面介绍UI设计怎么切图所需要的所有知识。本文大纲:UI设计切图是什么?切图是前端还是美工?UI设计切图规范UI设计如何切图给......
  • 21分钟MySQL基础入门
    MySQL 及快速的方式入门 MySQL。其实21分钟把下面语句之行一遍是没有问题的,要理解的话估计不止21分钟,对于初学者来说只需满足自己需求可以增删改查等简易的维护即可。目录开始使用登录MySQL创建数据库创建数据库表增删改查SELECTUPDATEINSERTDELETEWHEREAND和ORANDORORDERBYI......
  • 快速入门
                  ......
  • Android基础入门教程——8.1.1 Android中的13种Drawable小结 Part 1
    本节引言:从本节开始我们来学习Android中绘图与动画中的一些基础知识,为我们进阶部分的自定义 打下基础!而第一节我们来扣下Android中的Drawable!Android中给我们提供了多达13种的 Drawable,本节我们就来一个个撸一遍!Drawable资源使用注意事项Drawable分为两种: 一种是我们普通的图片......