- 博客(24)
- 收藏
- 关注
原创 【C/C++】“包含卫士”“头文件卫士”
作为宏名称的前缀和后缀,但实际上这种命名约定是保留给编译器实现的标识符,因此建议使用其他命名方式以避免潜在的命名冲突,例如使用项目或文件名的大写形式作为宏的名称。导致的多种编译问题,如变量或函数的重定义错误。它是维护大型项目源代码的一种重要实践,有助于提高代码的模块化和重用性。这样,在文件的其余部分或者在同一编译单元的其他文件中,如果再次尝试包含这个头文件,已经被定义了,编译器将跳过这个头文件的内容,避免重复包含。这个检查防止了头文件的内容在同一个文件中被包含多次。注意,虽然在这个例子中使用的是。
2024-02-05 19:13:15
398
原创 【C/C++】字符串的处理 ☞ “char str[]“ vs “std::string str“
'char str[]'定义了一个字符数组例如,会在栈上创建一个包含字符串 "hello" 和一个终结符 '\0' 的字符数组。'std::string' 是 C++标准库中的一个类,用于表示可变长度的字符串例如,std::string str = "hello";创建了一个 'std::string' 对象。类型安全:'std::string' 提供了更好的类型安全性,减少了出错的机会。易用性:'std::string' 的接口设计更现代,使用更方便,隐藏了许多底层的细节,如动态内存管理。灵活性。
2024-02-03 01:12:41
639
原创 【C/C++】报错:C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
是一个指向常量字符的指针,你不打算修改通过这个指针指向的字符串。这与 C++ 的类型安全性原则一致,有助于防止不小心修改字符串字面量导致的错误。类型的变量会引发警告(或错误),因为 ISO C++ 标准要求字符串常量是不可修改的。类型的变量时,实际上是试图忽略这个常量的不可修改属性,来处理字符串,除非你有使用 C 风格字符串的特定需求。如果你需要一个可修改的字符串,你可以使用字符数组或。当尝试将一个字符串常量分配给一个。在 C++ 中,尝试将字符串常量分配给。,比如尝试修改这个字符串常量的内容。
2024-02-02 23:41:27
1182
原创 【C/C++】字符串长度 ☞ ‘sizeof‘ ‘strlen‘ ‘.length()‘
在C或C++中,strlen和sizeof是两个经常被用到的,但作用完全不同的函数或操作符。
2024-02-02 17:55:21
409
2
原创 【C++】类型转换操作符static_cast
在 C++ 中,是一种类型转换操作符,用于在不同类型之间进行显式转换,同时提供编译时类型检查。这使得 `static_cast` 比 C 风格的强制类型转换(如 `(int)x`)更安全、更可控。
2024-01-28 22:28:14
353
1
原创 const关键字与宏定义的区别
1. 预处理器指令:宏定义是一种预处理器指令,它在编译之前被处理。`#define` 创建的标识符被预处理器在文本替换阶段替换掉,编译器看到的代码已经替换了宏定义。2. 没有类型信息:宏不是类型安全的。它们只是简单的文本替换,没有类型信息,也不进行类型检查。3. 无作用域限制:宏定义没有作用域的概念。一旦定义,除非显式地 `#undef`,否则它在整个文件(以及包含该文件的其他文件)中都有效。4. 不占用内存:宏定义的常量本身不占用内存空间。它们只是在编译时替换相应的值。
2024-01-26 21:40:50
287
1
原创 【编程范式】c语言面向过程?c++面向对象?
通常我们在学习编程,且以c/c++为入门编程语言时,会听到这句话“c语言面向过程;c++面向对象。”何为面向过程?何为面向对象?
2024-01-23 07:10:31
378
1
原创 【Linux / Vim】如何快速移动光标?
和。上述快捷键是在下使用的。如果您处于插入模式,需要先按 `Esc` 键进入普通模式,然后再使用这些快捷键。
2024-01-22 05:54:52
709
原创 静态库与动态库
这些文件通常包含为实现特定功能(如数学运算、图形处理、数据库连接等)而编写的函数或对象。库文件的目的是提供一套已编写好的、可重用的代码,以便开发者在创建新软件时无需从头开始编写这些功能。当你的程序被编译链接到一个动态库时,不会将库的代码复制到可执行文件中。当你编译一个程序并链接到一个静态库时,库中的代码会被整体复制到最终的可执行文件中。在链接的时候拷贝库文件,打包进可执行程序(在编译的时候进行打包)静态库是一种在程序编译时被包含进程序中的库。在链接时,定位了库文件的位置,在运行的时候进行加载。
2024-01-18 01:04:50
380
1
原创 【Linux基操】ls -al命令返回解读
例:1 文件类型见:【Linux基操】‘ls -l‘命令解读--第一列-CSDN博客Number of Links: The name of the user who owns the file or directory.The name of the group that owns the file or directory.
2024-01-08 23:01:35
860
原创 【Linux基操】‘ls -l‘命令解读--第一列
ls -l命令在Linux和类Unix系统中用来以长列表格式显示目录内容,其中包括文件的详细信息,如权限、链接数、所有者、组、大小、时间和名称。第一列特别显示了文件的权限和类型。
2024-01-04 15:41:12
503
1
原创 【Linux基操】文件的拷贝、移动、删除
cp - copy files and directories 拷贝文件和文件夹。rm - remove files or directories 移除文件或者目录。mv - move (rename) files 移动文件/改变文件的名字。[补充]tree 命令:将文件的排布形式打印出来。普通文件拷贝到目录文件。目录文件拷贝到目录文件。
2024-01-02 21:42:55
347
原创 【Linux基操】普通文件的创建
通常,时间戳可以是一个整数(表示秒数)或浮点数(表示秒的小数部分),从某个固定的起始点开始计算时间,通常是UNIX纪元(Unix Epoch),即1970年1月1日 00:00:00 UTC(协调世界时)。不过,也有其他时间戳表示方式,例如以毫秒或微秒为单位的时间戳。(Timestamp)是一种表示日期和时间的方式,通常是一个数字或字符串,用来标识某一时刻相对于特定基准时间的时间差或偏移量。要注意的是,时间戳通常是与时区无关的,因此它们不包含时区信息。如果需要考虑时区,就需要将时间戳与时区信息一起使用。
2024-01-02 17:43:39
355
原创 【Linux基操】‘cat /etc/passwd‘命令解读
这个文件包含每个用户的一行记录,记录中包含了有关用户的各种信息,例如用户名、用户ID(UID)、组ID(GID)、用户描述、主目录和登录Shell等。需要注意的是,由于安全性考虑,现代系统通常将实际密码信息存储在 '/etc/shadow' 文件中,该文件只对超级用户可读,从而保护了用户密码的安全性。(concatenate)命令主要用于。在Linux系统中,
2024-01-01 12:32:25
2179
原创 【Linux基操】命令行——“ping“ 命令
"ping" 命令是一个用于测试网络连接的常用命令行工具,可用于检测主机之间是否能够互相通信。它发送小的数据包到目标主机,并等待目标主机返回相应的数据包,从而测量往返时间(Round-Trip Time,RTT)以及是否存在网络通信问题。"ping" 命令在网络故障排除和检测网络延迟方面非常有用。通过观察命令的输出,用户可以得知网络连接的质量,检查是否存在丢包现象,并获取往返时间等信息。然而, 有些网络设备可能配置为不响应"ping"请求,因此"ping"的结果并不总是绝对准确。其中,目标主机可以是。
2023-12-30 16:42:27
387
1
原创 windows与Linux的一些直观区别
在Windows操作系统中,每个物理存储设备和分区都被分配一个独特的盘符,例如C:\、D:\、E:\等。这些盘符使用户能够方便地定位和访问其文件和数据。在其他操作系统中,如。是用于标识存储设备的一个符号或符号组合,通常是一个字母(例如C、D、E等)。这些盘符用于访问计算机上的不同存储设备,如硬盘驱动器、光盘驱动器、USB驱动器等。总体而言,盘符是操作系统用于管理和访问存储设备的一种标识方式。
2023-12-30 16:23:14
541
1
原创 PAT A1080(测试点4运行超时与段错误)
段错误:可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起。👆测试点4运行超时,原因是重复的数组访问次数过多。解决方法是利用变量记录反复使用的数。👆接下来出现测试点4的段错误。据,避免不必要的数组访问。
2023-09-08 18:38:25
99
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人