回忆C++重要概念

一、指针解引用

int value = 42;
int* ptr = &value; // ptr指向value的地址,这个是模版用法,不涉及语法,背下来就好

// 显式解引用指针来访问指向的对象
int dereferencedValue = *ptr; // 解引用ptr获取value的值

std::cout << dereferencedValue; // 输出:42

二、指针传参和引用传参

两种传参方式的函数定义(在void后面)和传参方式(在main函数中)都不一样。

引用传参不会进行额外的内存拷贝,因此通常被称为"零拷贝"。它通过在函数参数中声明引用来直接引用原始对象,并在函数内部对原始对象进行操作。这意味着在函数内部对引用进行的任何修改都会直接影响原始对象。引用传参不会创建新的对象副本,因此它是一种高效的参数传递方式。

指针传参需要在内存中创建一个指针副本,这涉及到内存拷贝。指针传参通过在函数参数中声明指针来传递对象的地址。在函数内部,可以通过解引用指针来操作对象。指针传参允许对指针进行重新赋值,从而可以指向不同的对象。指针传参的副本的生存周期取决于它在堆区还是栈区。

class ExampleClass {
    int value;
};
//引用传参
void ModifyObjectByReference(ExampleClass& instance, int newVal) {
    instance.value = newVal;
}
//指针传参
void ModifyObjectByPointer(ExampleClass* instance, int newVal) {
    instance->value = newVal;
}

int main() {
    ExampleClass obj(42);

    ModifyObjectByReference(obj, 100);
    std::cout << obj.value << std::endl; // 输出:100

    ModifyObjectByPointer(&obj, 200);
    std::cout << obj.value << std::endl; // 输出:200

    return 0;
}

三、宏

在 C/C++ 中,宏(Macro)是一种预处理指令,用于在编译之前对源代码进行文本替换。宏可以定义为简单的文本片段、函数或带参数的代码块,并且可以在程序中多次使用。

#define PI 3.14159
//甚至在方舟进行时的编译里面还有这样的,将双下划线定义为assembler类+成员引用符号
#define __ assembler->

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值