c++
文章平均质量分 69
为啥不能修改昵称啊
这个作者很懒,什么都没留下…
展开
-
指向指针的指针+ 值传递的理解
原始程序会导致崩溃,因为内存分配的结果没有返回给main中的str。通过传递指向指针的指针,可以使内存分配的结果有效地传回并使用。指针和引用python传参的值传递让我们通过一个简单的例子来说明值传递和引用传递(或指针传递)之间的区别。值传递:在中,a是main函数中a的副本。对a的修改不会影响原始变量。指针传递:在中,p是a的地址,*p允许你通过指针修改原始变量a的值。通过这种方式,你可以看到传递变量的值和地址(指针)所产生的不同效果。原创 2024-11-03 15:59:54 · 389 阅读 · 0 评论 -
异或的性质
这种方法的灵活性和优势在于它不需要额外的存储空间(不使用第三个变量),并且可以在某些情况下避免算术操作可能导致的溢出问题。虽然它可能看起来不直观,但一旦理解了异或运算的基本性质,就能更容易地掌握这种交换值的技巧。原创 2024-11-03 14:44:37 · 375 阅读 · 0 评论 -
int a[5]里面的 a表示&a[0], &a执行包含5个整数的数组的指针
因此,a + 1的计算结果是指向数组中第二个元素的地址,而不是简单地加 1。这使得数组中的每个元素都可以通过指针算术方便地访问,同时也保持了对不同数据类型的正确内存访问。原创 2024-11-03 14:02:50 · 767 阅读 · 0 评论 -
sizeof(str)什么时候把str当做指针,什么时候返回str的整个长度
在函数内部,使用sizeof获取数组大小会失败,因为参数会被退化为指针。要解决这个问题,可以传递数组大小,或者使用字符串处理函数如strlen。你对代码的理解是正确的,指针的sizeof返回的值无法反映数组的实际大小,这是常见的错误。那什么时候sizeof(str)里面的str不是指针,而是str的真实长度呢?什么时候又把str当做指针呢在 C/C++ 中,sizeof操作符的行为取决于str的上下文(即它的声明和使用方式)。以下是关于何时// 这里是指针// str 是数组// 这里是数组。原创 2024-11-03 12:59:45 · 480 阅读 · 0 评论 -
字符数组和字符串常量
数组 vs. 指针:在 C/C++ 中,字符数组是不同的对象,比较时会比较它们的地址;而指向常量字符串的指针如果指向同一个字符串常量,则它们的地址是相同的。输出结果0(对于0(对于1(对于1(对于0011。原创 2024-11-03 11:17:13 · 343 阅读 · 0 评论 -
const关键字
声明指针的可变性指向数据的可变性不可更改(常量指针)可修改可更改不可修改(指向常量)可更改不可修改(指向常量)使用const关键字可以有效地控制指针和指向数据的可修改性。理解这些区别可以帮助你更好地管理内存和保护数据不被意外修改。原创 2024-11-03 11:09:41 · 303 阅读 · 0 评论 -
指向函数的指针
代码的最终输出是110,这是通过multi函数将temp和arg1的值相乘得到的结果,并存储在arg2中。原创 2024-11-03 11:06:51 · 101 阅读 · 0 评论 -
一个指针可以被声明为 `volatile`
将指针声明为volatile的作用在于确保指针的地址在每次访问时都是最新的,从而防止编译器对指针的地址值进行优化缓存。这种用法在嵌入式系统、操作系统开发和多线程应用中非常常见,以确保指针的地址始终是准确的。原创 2024-11-02 15:46:41 · 321 阅读 · 0 评论 -
一个参数可以同时是 const 和 volatile
结合使用const和volatile可以提高代码的安全性和可靠性,尤其在处理可能由多种来源修改的数据时。这种组合在编写嵌入式系统、操作系统或多线程程序时尤为重要。原创 2024-11-02 15:43:09 · 188 阅读 · 0 评论 -
volatile变量
volatile关键字确保编译器不会对变量进行优化,每次访问都从内存中读取最新的值。适用于可能被程序外部事件(如硬件、中断、多线程)修改的变量,确保这些值在程序中始终是最新的。编译器优化是编译器在将源代码转换为机器代码的过程中进行的一系列技术手段,旨在提高生成代码的执行效率、减小代码大小或改善运行时性能。删除冗余代码:去除未使用或多余的代码段,减少最终生成的程序体积。常量折叠:在编译时计算常量表达式的值,而不是在运行时计算。循环优化。原创 2024-11-02 15:36:51 · 916 阅读 · 0 评论 -
条件编译的作用
条件编译是 C 语言中预处理的一种功能,它允许根据特定条件包含或排除代码的编译。这样可以在不同的环境或条件下灵活地控制代码的编译,通常使用#ifdef#ifndef#if#else和#endif等指令来实现。原创 2024-11-02 15:07:59 · 214 阅读 · 0 评论 -
static全局/局部变量/函数和普通全局/局部变量/函数的区别
static全局变量:仅在定义它的文件中可见,防止其他文件意外使用该变量。static局部变量:在函数内声明,但在多次调用间保留其值。static函数:作用域仅限于声明它的文件中,防止其他文件调用它。原创 2024-11-02 14:50:24 · 311 阅读 · 0 评论 -
全局变量可以定义在可被多个.C文件包含的头文件
在多个 C 文件中可以定义同名全局变量,其中一个文件定义普通全局变量(供其他文件访问),另一个文件定义static全局变量(仅文件内可见),这不会引起冲突。原创 2024-11-02 14:20:39 · 128 阅读 · 0 评论 -
c++源代码文件到最后运行的整个过程
在 C++ 中,源代码文件从编写到最终运行是一个多阶段的过程,主要分为和。下面详细解释每个过程及其作用。原创 2024-11-02 14:14:22 · 616 阅读 · 0 评论 -
如何引用一个已经定义过的全局变量?
使用头文件声明的变量,如果拼写错误,在编译阶段会检测到,因为头文件的声明需要与定义匹配。使用extern引用的变量,如果拼写错误,编译阶段不会报错,但会在连接阶段报错,因为extern只是一个引用声明,编译器不会检查是否已定义。原创 2024-11-02 14:12:15 · 467 阅读 · 0 评论 -
c++中局部变量和全局变量同名,使用::访问全局变量
局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局。答:能,局部会屏蔽全局。要用全局变量,需要使用”::”部变量,而那个局部变量的作用域就在那个循环体内。局部变量能否和全局变量重名?原创 2024-11-02 14:05:25 · 318 阅读 · 0 评论 -
switch的参数不能是浮点数类型
switchswitch表达式只能接受整数、字符、枚举等离散类型。浮点数字符串自定义类对象等不能用于switch表达式。switch提供了简洁的多分支控制,但类型限制需要注意。在 C++ 中,switch语句的参数不能为实型,这里的“实型”指的是浮点数类型,包括float和double类型。也就是说,switch的表达式部分不能是浮点类型的变量或表达式。switch语句的参数不能是浮点数,因为浮点数存储的是近似值,可能导致误差,无法确保精确匹配。switch。原创 2024-11-02 14:01:41 · 473 阅读 · 0 评论 -
什么函数不能声明为虚函数
虚函数:用于实现多态行为,允许基类指针或引用在运行时调用派生类的函数。构造函数:用于初始化对象,名称与类名相同,没有返回类型,在对象创建时自动调用。不能将构造函数声明为虚函数,因为构造函数在对象创建时调用,虚函数需要对象的 vtable 才能工作,而 vtable 在构造函数期间尚未完全建立。原创 2024-11-02 13:59:07 · 297 阅读 · 0 评论 -
静态数据区,堆,栈
静态数据区:用于全局变量和静态变量,内存由编译器在编译期分配,生命周期为程序的整个运行期。栈:用于局部变量和函数调用信息,由编译器自动管理,生命周期为函数调用期,分配和释放速度快。堆:用于动态分配的内存,由程序员手动管理,生命周期由程序员控制,灵活性高但管理复杂。原创 2024-11-02 11:31:46 · 568 阅读 · 0 评论 -
.h头文件中的ifndef/define/endif 的作用
ifndef#define#endif的组合常用于头文件,以防止重复包含导致的编译错误,是一种规范性的写法。原创 2024-11-02 11:22:06 · 230 阅读 · 0 评论 -
c++引用的作用+什么情况下适合使用引用
引用的设计是为了提供一种轻量、直接访问变量的方式,以避免拷贝开销,同时使代码更加简洁和安全。直接使用变量名称无法实现上述功能。原创 2024-11-02 11:18:35 · 808 阅读 · 0 评论 -
c++primer
c++原创 2022-09-20 16:26:26 · 332 阅读 · 0 评论