首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C++ 入门必看:引用怎么用?inline 和 nullptr 是什么?

C++ 入门必看:引用怎么用?inline 和 nullptr 是什么?

原创
作者头像
小焱
发布2025-10-21 08:44:27
发布2025-10-21 08:44:27
1240
举报
文章被收录于专栏:Java开发Java开发

在 C++ 入门中,引用、inlinenullptr 是三个基础且重要的概念,下面分别解释它们的用法和意义:

一、引用(Reference):给变量起“别名”

引用是已存在变量的别名,它与原变量共享同一块内存空间,修改引用会直接影响原变量。

用法:
  1. 定义引用:用 & 符号声明,必须在定义时初始化,且不能再指向其他变量。int a = 10; int& ref = a; // ref 是 a 的引用(别名) ref = 20; // 修改 ref 等同于修改 a,此时 a = 20
  2. 作为函数参数:避免值传递的拷贝开销,直接操作原变量(常用作输出参数)。void swap(int& x, int& y) { // 引用传递 int temp = x; x = y; y = temp; } int main() { int a = 1, b = 2; swap(a, b); // 直接交换 a 和 b 的值,无需指针 return 0; }
  3. 作为函数返回值:可以返回变量的引用(需确保变量生命周期足够长),支持链式操作。int& getElement(int arr[], int index) { return arr[index]; // 返回数组元素的引用 } int main() { int arr[3] = {1, 2, 3}; getElement(arr, 1) = 100; // 直接修改数组元素,arr 变为 {1, 100, 3} return 0; }
注意:
  • 引用必须初始化,且不能指向空(区别于指针)。
  • 不存在“引用的引用”或“引用的指针”,但可以有“指针的引用”。

二、inline:内联函数,减少函数调用开销

inline 是用于修饰函数的关键字,建议编译器在调用该函数时,直接将函数体代码“插入”到调用处,而非执行常规的函数调用(压栈、跳转等操作),从而提高程序运行效率。

用法:
代码语言:cpp
复制
inline int add(int a, int b) {  // 声明为内联函数
    return a + b;
}
int main() {
    int sum = add(1, 2);  // 编译器可能直接替换为 sum = 1 + 2
    return 0;
}
注意:
  • inline 是“建议”而非“命令”:编译器可能忽略该建议(例如函数体过大时)。
  • 内联函数通常定义在头文件中(避免链接错误),且适合短小、频繁调用的函数(如工具函数)。
  • 递归函数、复杂循环的函数不适合声明为 inline(会导致代码膨胀)。

三、nullptr:空指针常量(C++11 引入)

nullptr 是专门表示“空指针”的关键字,用于替代 C 语言中的 NULLNULL 本质是 (void*)00,可能引发歧义)。

用法:
代码语言:cpp
复制
#include <iostream>
void func(int x) { std::cout << "int: " << x << std::endl; }
void func(char* p) { std::cout << "char*: " << p << std::endl; }

int main() {
    // NULL 会被当作 0 处理,调用 func(int)
    func(NULL);    // 输出:int: 0(可能不符合预期)
    
    // nullptr 明确表示空指针,调用 func(char*)
    func(nullptr); // 输出:char*: (空指针)
    return 0;
}
优势:
  • 类型安全:nullptr 的类型是 nullptr_t,仅能隐式转换为指针类型,避免 NULL 被当作整数的歧义。
  • 清晰表达意图:明确表示“这是一个空指针”,而非数字 0。

总结

  • 引用:变量的别名,用于简化指针操作、减少拷贝,需初始化且不能更改指向。
  • inline:建议编译器内联展开函数,适合短小函数,提高执行效率。
  • nullptr:C++11 后的空指针常量,替代 NULL 以避免类型歧义,更安全。

这三个特性是 C++ 基础语法的重要部分,理解它们有助于写出更简洁、高效、安全的代码。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、引用(Reference):给变量起“别名”
    • 用法:
    • 注意:
  • 二、inline:内联函数,减少函数调用开销
    • 用法:
    • 注意:
  • 三、nullptr:空指针常量(C++11 引入)
    • 用法:
    • 优势:
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档