IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 浅谈:字符串、转义字符、操作符、关键字。 -> 正文阅读

[C++知识库]浅谈:字符串、转义字符、操作符、关键字。

一、字符串

1打印字符串

"hello world","This is a programm"

这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
注意: 字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算做字符串内容。
代码如下(示例):

#include<stdio.h>
int main()
{
char arr1[]="abc";
char arr2[]={'a','b','c'};
return 0;
}

经过监视我们可以发现在arr1中隐藏了一个\0。这是因为C系统在用字符数组存储字符串常量时会自动加一个’\0’作为结束符,在arr1中共有三个字符,但是在数组中它占4个字节。
在这里插入图片描述

2计算字符串长度

既然说\0是字符串的结束标志,呢加不加\0又有什么区别呢。
代码如下(示例):

#include<stdio.h>
int main()
{
char arr1[]="abc";
char arr2[]={'a','b','c'};
printf("%s\n",arr1);
printf("%s\n",arr2);
return 0;

以上代码会输出什么呢,让我们的代码跑起来看一下。我们可以看到arr1正常输出"abc",而arr2输出abc后输出很多文字,后面的文字是随机值,这就是我们前面所说的\0是字符串的结束标志。在执行printf函数时,每输出一个字符检查一次,看下一个字符是否为\0,遇\0就停止输出。
在这里插入图片描述
注意: 不只在输出字符串时,在使用strlen函数计算字符串长度时,计算的是\0前求出的字符个数。我们可以看到arr1计算结果为3,而arr2计算结果为42,是一个随机值。
代码如下(示例):

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a','b','c' };
	printf("%d\n", strlen(arr1));
	printf("%d\n", strlen(arr2));
	return 0;
}

在这里插入图片描述

二、转义字符

1例题

假如我们要在屏幕上打印一个目录:c:\code\test.c我们该如何写代码?是下面这样嘛?
代码如下(示例):

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

实际上程序的运行结果却是
在这里插入图片描述
为什么会出现这样的结果呢?其实是C语言所有非转义字符前面加上’\‘会被忽略,所以’\c’打印出来的就是’c’,以及\t被识别为转义字符\t(水平制表符)
下面我们介绍常用的一些转义字符

转义字符释义
\n换行
\t水平制表符(相当于键盘上Tab)
\dddddd表示1-3个八进制的数字.如:\130X
\xdddd表示2个十六进制数字.如\30

2.经典面试题

代码如下(示例):

#include<stdio.h>
#include<string.h>
int main()
{
  printf("%d\n",strlen("c:\test\628\test.c"));
  return 0;
}

应该打印多少呢,有人说13,有人说14.相信你看完以上内容后会有正确的答案。让我们代码运行起来看一下.
在这里插入图片描述
解析: 这里\t,\62被分别解析为水平制表符与8进制数字。说13的人一定是讲\628都视为8进制数字了,在这里一定要注意\ddd为8进制数字而\62才为8进制数字。要注意这个坑,哈哈哈哈哈。

三、操作符

操作符中有算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函数调用和结构成员等。在这里重点介绍以下几种。

1单目操作符

重点区分: i++和++i 与i–和--i的区别
代码如下(示例):

#include<stdio.h>
int main()
{  
   int a = 10;
   int b = 11;
   b=++a;
   printf("a=%d\nb=%d",a,b);
   return 0;
}

在这里插入图片描述

#include<stdio.h>
int main()
{  
   int a = 10;
   int b = 11;
   b=a++;
   printf("a=%d\nb=%d",a,b);
   return 0;
}

在这里插入图片描述
综述: 前置++,先++,后使用;
? ? ? ? ? ? 后置++,先使用,后++;

2条件操作符(三目操作符)

表达式1?表达式2:表达式3。可以理解为:先计算表达式1的值,如果表达式1的值为真(非0),自然直接到表达式2,如为假(0值)就绕过表达式2,到表达式3,如图所示。
在这里插入图片描述

3逗号表达式

使用逗号运算符是为了把几个表达式放在一起。整个逗号表达式的值为系列中最后一个表达式的值。从本质上讲,逗号的作用是将一系列运算按顺序执行。
代码如下(示例):

#include<stdio.h>
int main()
{
	int a = 3;
	int b = 20;
	int c = 0;
	int d = (a -= 3, b += a, c = a - b, b = a - 4);
	printf("d=%d\n", d);
	return 0;
}

第一个表达式使a=0,第二个表达式b=20,第三个表达式c=-20,第四个表达式b=-4,因为表达式从左向右依次计算,但整个表达式的结果是最后一个表达式的结果,所以应打印d=-4;
在这里插入图片描述

四、关键字static

在C语言中:static是用来修饰变量和函数的1. 修饰局部变量-称为静态局部变量2. 修饰全局变量-称为静态全局变量3. 修饰函数-称为静态函数
在不使用static时
在这里插入图片描述
在使用static之后
在这里插入图片描述
在解析以上区别前先说明一个知识点,在内存中分为栈区,堆区和静态区;下图来说明内存的分布
在这里插入图片描述

在static修饰局部变量的时候,局部变量就变成了静态的局部变量出了局部的范围,不会销毁,下一次进入函数依然存在。其实是因为: static修饰的局部变量是存储在静态区的
static修饰局部变量时,实际改变的是变量的存储位置,本来一个局部变量是放在栈区的,被static修饰后放在了静态区。从而导致 出了作用域依然存在,生命周期并没有结束。


五、总结

以上就是本期字符串、转义字符、操作符以及关键字static的一些理解与解析。

🌟Hello world 我们下期见!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 15:47:14  更:2021-12-18 15:49:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:50:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码