加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 应用 > 正文

URL地址中的中文乱码问题的解决_静静的微微一笑的博客-程序员宝宝

发布时间:2022-12-08 13:31:18 所属栏目:应用 来源:网络
导读: 1. 变量的作用域及其生命周期
变量分为局部变量和全局变量,其作用域和生命周期也有所不同。
局部变量的作用域:就是变量所在的局部范围。
全局变量的作用域:整个工程。
其中对于整个工程

1. 变量的作用域及其生命周期

变量分为局部变量和全局变量,其作用域和生命周期也有所不同。

局部变量的作用域:就是变量所在的局部范围。

全局变量的作用域:整个工程。

其中对于整个工程的理解是,在不同的.c文件中,一个.c文件中的全局变量可以在另一个.c文件中使用(目前学到的使用方法是打印)。但是需要声明。

声明的方法:使用声明函数, extern

应用程序日志_docker应用日志_log4j日志缓存程序崩掉

变量的生命周期:变量的创建和销毁之间的时间段

局部变量的生命周期:入局部范围开始而出局部范围结束

全局变量的生命周期:程序的生命周期

2. 常量的类型

字面常量

应用程序日志_docker应用日志_log4j日志缓存程序崩掉

const修饰的常变量,某一个变量,在用 const 修饰以后,它就是不可变的了,具有了常量的属性,但是它仍然是一个变量,不能在某些只能是常量应用的领域应用。

某些不可应用的场景如下图

log4j日志缓存程序崩掉_应用程序日志_docker应用日志

define定义的标识符常量,同样是定义过就不可改变的。

应用程序日志_docker应用日志_log4j日志缓存程序崩掉

枚举常量(比较新的一个概念)

定义枚举常量的函数, enum ,如下图

log4j日志缓存程序崩掉_docker应用日志_应用程序日志

同样的,枚举常量也有其相对应的值,遵循0 1 2 3 4 ............ 这样的规律,但是也可以进行赋初值的操作来将某个值“塞”到枚举常量里。

应用程序日志_docker应用日志_log4j日志缓存程序崩掉

3. 字符串

字符串就是一串用双引号括起来的字符,其中有一个叫做 字符数组的概念,他可以储存字符串,当然也可以储存字符。

字符数组是一组相同类型的元素,可以类比为数学中的“集合”。

log4j日志缓存程序崩掉_docker应用日志_应用程序日志

其中一个比较重要的概念是,字符串在结尾的位置 隐藏了一个\0的字符,\0是字符串的结束标志,但是不算做字符串的内容应用程序日志,也就是在计算中不算作长度。

为了证明字符串在结尾位置隐藏了一个\0的字符,可以进行如下操作。

a. 监视的操作

log4j日志缓存程序崩掉_docker应用日志_应用程序日志

由图可以看出,在调试监视下,arr1中有 \0这么一个东西

b. 打印的操作

直接打印出arr1 和arr2,发现出现明显不同,并且在arr2中,也就是那个假设认为没有\0,出现了乱码。

应用程序日志_log4j日志缓存程序崩掉_docker应用日志

根据对比实验的原则,在arr2中加入\0以后,发现乱码消失,和arr1打印出的结果相同。

docker应用日志_log4j日志缓存程序崩掉_应用程序日志

c. 计算长度的操作

首先介绍计算长度的函数及其头文件,

头文件: #include

库函数: strlen

在说明这一步的操作之前,要补充的一个知识是,\0没有的后果是什么?

电脑中的数据是这样的,实际上在abc的后面是未知的数据,如果没有\0终止,那么就会持续后面未知的数据,直到出现\0停止,可以和终止子想类比,想一想基因突变中导致终止子的位置提前或后退或消失。

这也就解释了为什么在b操作中,打印出乱码的结果。

docker应用日志_应用程序日志_log4j日志缓存程序崩掉

在计算arr1和arr2的操作中,可以看到arr1的长度为3,而arr2的长度为15,但是实际上,arr2的长度是一个随机值,只是说在这次,在第十六位出现了\0,终止了对后面数据的读取,如果\0直到100才出现,那么计算出的长度就是99.

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章