首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C++入门】变量和基本类型

【C++入门】变量和基本类型

作者头像
byte轻骑兵
发布2026-01-21 15:54:36
发布2026-01-21 15:54:36
600
举报

在C++编程中,变量和基本类型是编程的基础。了解如何声明和使用变量,以及掌握C++中的基本数据类型,是编写有效C++程序的第一步。

一、 基本内置类型

C++提供了多种基本数据类型,用于存储不同类型的数据。

1.1. 整型(Integer Types)

  • int:标准整型,通常占用4个字节(32位系统)。
  • short:短整型,通常占用2个字节。
  • long:长整型,通常占用4或8个字节(取决于系统)。
  • long long:更长的整型,通常占用8个字节。

整型变量可以存储正数、负数和零。

1.2. 浮点型(Floating-point Types)

  • float:单精度浮点型,通常占用4个字节。
  • double:双精度浮点型,通常占用8个字节。
  • long double:扩展精度浮点型,占用字节数依赖于实现(通常是12或16个字节)。

浮点型变量可以存储小数和科学计数法表示的数。

1.3. 字符型(Character Type)

  • char:字符型,通常占用1个字节。
  • wchar_t宽字符,通常2字节,处理Unicode字符。

字符型变量可以存储单个字符,包括字母、数字和特殊字符。字符常量用单引号括起来,如'A'

1.4. 布尔型(Boolean Type)

  • bool:布尔型,用于存储逻辑值truefalse

布尔型变量通常用于条件判断和控制结构。

1.5. 示例代码

以下是一个简单的C++程序,展示如何声明和使用变量和基本类型:

代码语言:javascript
复制
#include <iostream>

int main() {
    int age = 25;
    double salary = 5000.0;
    char letter = 'A';
    bool isPassed = true;

    std::cout << "Age: " << age << std::endl;
    std::cout << "Salary: " << salary << std::endl;
    std::cout << "Letter: " << letter << std::endl;
    std::cout << "Is Passed: " << std::boolalpha << isPassed << std::endl;

    return 0;
}

声明了四个变量,分别属于整型、浮点型、字符型和布尔型,并使用std::cout输出它们的值。

二、变量声明与定义

2.1. 声明 vs 定义

在C++中,变量必须先声明后使用。声明变量的基本语法是:

代码语言:javascript
复制
dataType variableName;
  • dataType:变量的数据类型,决定了变量可以存储的数据的类型和范围。
  • variableName:变量的名称,用于在程序中引用变量。

例如:

代码语言:javascript
复制
int age;
double salary;
char letter;
bool isPassed;

这里,age是一个整型变量,salary是一个双精度浮点型变量,letter是一个字符型变量,isPassed是一个布尔型变量。

2.2. 变量的初始化

变量可以在声明时进行初始化,也可以在声明后进行赋值。

代码语言:javascript
复制
int age = 25;
double salary = 5000.0;
char letter = 'A';
bool isPassed = true;

// 或者声明后赋值
age = 30;
salary = 6000.0;
letter = 'B';
isPassed = false;

2.3. 默认初始化规则

变量类型

默认值

全局变量

零初始化

局部内置类型

未定义(随机值)

类类型

调用默认构造函数

三、作用域与生命周期

3.1. 作用域类型

代码语言:javascript
复制
int global = 100;  // 全局作用域

int main() {
    int local = 50; // 块作用域
    {
        int inner = 30; // 嵌套块作用域
    }
}

3.2. 生命周期对比

变量类型

生命周期

存储位置

局部变量

块执行期间

栈内存

全局变量

程序运行全程

数据段

static局部变量

首次定义到程序结束

数据段

四、复合类型

4.1. 引用(别名)

代码语言:javascript
复制
int val = 42;
int &refVal = val;  // 必须初始化
refVal = 100;       // 修改原变量值

引用特性

  • 必须绑定到对象(不能绑定字面量)
  • 类型严格匹配(double &d = i;非法)
  • 无法重新绑定

4.2. 指针

代码语言:javascript
复制
int *p = nullptr;  // 现代C++推荐初始化方式
int num = 10;
p = &num;          // 取地址
*p = 20;           // 解引用

// 指针运算
int arr[5] = {0};
int *ptr = arr;
ptr++;  // 移动sizeof(int)字节

指针操作规范

  • 访问前必须检查非空:if(p != nullptr) { ... }
  • 优先使用智能指针(unique_ptr/shared_ptr
  • 避免野指针:int *p; *p = 5;(危险!)

五、const限定符

5.1. 基本用法

代码语言:javascript
复制
const int MAX_SIZE = 100;  // 必须初始化
const int *p = &MAX_SIZE; // 指向常量的指针
int *const cp = &var;      // 常量指针
constexpr int N = 20;      // 编译期常量(C++11)

5.2. 顶层const vs 底层const

代码语言:javascript
复制
int i = 0;
const int ci = 42;  // 顶层const
const int *p2 = &ci; // 底层const
const int *const p3 = p2; // 右const是顶层,左const是底层

六、类型别名

6.1. 传统方式

代码语言:javascript
复制
typedef double wages;  // wages是double的别名
typedef wages base, *p; // base是double, p是double*

6.2. C++11新方式

代码语言:javascript
复制
using SI = Sales_item;  // 更直观的语法
using Ptr = int*;       // 指针类型别名

七、auto类型推导(C++11)

代码语言:javascript
复制
auto i = 42;        // int
auto d = 3.14;      // double
auto p = &i;        // int*
auto &r = d;        // double&

// 复合类型推导
const auto *cp = &i; // const int*
auto ptr = new auto(10); // int*

auto使用规范

  • 避免滥用:auto x = GetComplexObject(); 可能隐藏类型信息
  • 必须初始化:auto y;(错误!)
  • 结合decltype使用:decltype(f()) sum = x;

八、关键注意事项

  • 变量命名冲突:避免与标准库名称冲突(如countlist
  • 类型转换陷阱
代码语言:javascript
复制
unsigned u = 10;
int i = -42;
cout << i + i << endl;  // -84
cout << u + i << endl;  // 4294967264(32位系统)
  • 字面值后缀
代码语言:javascript
复制
auto x = 3.14f;   // float
auto y = 100ULL;  // unsigned long long
  • 类型转换操作
代码语言:javascript
复制
int a = 5;
double b = static_cast<double>(a);  // C++风格转换

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 基本内置类型
    • 1.1. 整型(Integer Types)
    • 1.2. 浮点型(Floating-point Types)
    • 1.3. 字符型(Character Type)
    • 1.4. 布尔型(Boolean Type)
    • 1.5. 示例代码
  • 二、变量声明与定义
    • 2.1. 声明 vs 定义
    • 2.2. 变量的初始化
    • 2.3. 默认初始化规则
  • 三、作用域与生命周期
    • 3.1. 作用域类型
    • 3.2. 生命周期对比
  • 四、复合类型
    • 4.1. 引用(别名)
    • 4.2. 指针
  • 五、const限定符
    • 5.1. 基本用法
    • 5.2. 顶层const vs 底层const
  • 六、类型别名
    • 6.1. 传统方式
    • 6.2. C++11新方式
  • 七、auto类型推导(C++11)
  • 八、关键注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档