C++之数据存储

星空物语 发布于 2025-02-06 68 次阅读


  • 标识符
  • 常量
    • 整型常量
    • 带后缀的整形常量
    • 实型常量(浮点数)
    • 带后缀的实型常量
    • 转义字符
    • 字符串
    • bool型常量
    • 符号常量
  • 变量

标识符

标识符(Identifier) 是为变量、函数、类、结构体、枚举、命名空间等实体定义的名称。

标识符的命名规则

C++ 对标识符的命名有严格的规则,以下是标识符命名的基本规则:

  1. 组成字符
    • 标识符可以由以下字符组成:
      • 字母(a-zA-Z
      • 数字(0-9
      • 下划线(_
    • 标识符的第一个字符必须是字母或下划线,不能是数字。
  2. 区分大小写
    • C++ 是区分大小写的语言,因此 myVar 和 myvar 是两个不同的标识符。
  3. 关键字不能用作标识符
    • C++ 的关键字(如 intclassreturn 等)是语言保留的,不能用作标识符。
  4. 长度限制
    • C++ 标准没有明确规定标识符的最大长度,但大多数编译器支持至少 31 个字符(C++98 标准)或更多(C++11 及更高版本)。
  5. 避免双下划线
  6. 可读性和命名规范
    • 虽然 C++ 对标识符的命名没有严格的风格要求,但为了提高代码的可读性,通常遵循一些命名规范,例如:
      • 变量名和函数名使用小写字母,单词之间用下划线分隔(my_variable)。
      • 类名和结构体名使用大写字母开头的驼峰命名法(MyClass)。
      • 常量名使用全大写字母,单词之间用下划线分隔(MAX_SIZE)。

标识符的作用域

标识符的作用域决定了它在程序中的可见性和生命周期。C++ 中有以下几种作用域:

  1. 局部作用域(Local Scope)
    • 在函数或代码块(如 {} 内)中定义的标识符具有局部作用域,只能在定义它的函数或代码块内访问。
  2. 全局作用域(Global Scope)
    • 在所有函数和代码块之外定义的标识符具有全局作用域,可以在整个程序中使用。
  3. 类作用域(Class Scope)
    • 在类或结构体中定义的成员变量和成员函数具有类作用域,只能通过类的对象或类名访问。
  4. 命名空间作用域(Namespace Scope)
    • 在命名空间中定义的标识符具有命名空间作用域,需要通过命名空间名称访问。

标识符的命名规范

为了提高代码的可读性和可维护性,通常遵循以下命名规范:

  1. 变量和函数
    • 使用小写字母,单词之间用下划线分隔。
    • 例如:int my_variable;void my_function();
  2. 类和结构体
    • 使用大写字母开头的驼峰命名法。
    • 例如:class MyClass;struct MyStruct;
  3. 常量
    • 使用全大写字母,单词之间用下划线分隔。
    • 例如:const int MAX_SIZE = 100;
  4. 枚举
    • 枚举类型名使用大写字母开头的驼峰命名法,枚举值使用全大写字母。
    • 例如:enum Color { RED, GREEN, BLUE };
  5. 命名空间
    • 使用小写字母,单词之间用下划线分隔。
    • 例如:namespace my_namespace {}

示例:

#include <iostream>
#include <string>

// 全局作用域
const int MAX_SIZE = 100; // 常量
int global_var = 10;      // 全局变量

// 命名空间作用域
namespace my_namespace {
    int namespace_var = 20;
}

// 类作用域
class MyClass {
public:
    int class_var; // 成员变量
    void my_method() { // 成员函数
        std::cout << "Class method called!" << std::endl;
    }
};

// 函数
void my_function() {
    int local_var = 30; // 局部变量
    std::cout << "Local variable: " << local_var << std::endl;
}

int main() {
    // 访问全局变量
    std::cout << "Global variable: " << global_var << std::endl;

    // 访问命名空间变量
    std::cout << "Namespace variable: " << my_namespace::namespace_var << std::endl;

    // 访问类成员
    MyClass obj;
    obj.class_var = 40;
    std::cout << "Class variable: " << obj.class_var << std::endl;
    obj.my_method();

    // 调用函数
    my_function();

    return 0;
}

标准 C++ 关键字

常量

直接常量

整形常量包括:正整数,负整数,0;其中8进制数据以0开头;16进制数据以0x开头。

cout << 100 <<endl; //10进制
cout << 034 <<endl; //8进制
cout << -034 <<endl; //8进制
cout << 0x27 <<endl; //16进制 39
cout << -0x27 <<endl; //16进制 -39

带后缀的整型常量:

  • 100U -> 代表无符号整型 unsigned
  • 100L ->代表长整形long
  • 100UL ->代表无符号长整形unsigned long
#include <iostream>  
using namespace std;
int main()
{
    cout << 100 << endl;  		//int 
    cout << 100U << endl;   	//unsigned 
    cout << 100L << endl;   	//long 
    cout << 100LL << endl;   	//long long  
    cout << sizeof(100) << endl;	// 100占用的字节数 
    cout << sizeof(100U) << endl;	// 100U占用的字节数
    cout << sizeof(100L) << endl;	// 100L占用的字节数
    cout << sizeof(100UL) << endl;	// 100UL占用的字节数
    cout << sizeof(100LL) << endl;	// 100LL占用的字节数
    cout << sizeof(100ULL) << endl;	// 100ULL占用的字节数
    return 0;
}

执行结果:

实型常量

实型常量可以用 小数形式和指数形式表达。

cout<<2.18<<endl;
cout<< 2.18E+20 <<endl;
cout<< -2.18E-20 <<endl;

带后缀的实型常量:默认情况实型常量是double型浮点数;后缀f可以指定常量为float浮点数。

    cout <<  2.18 << endl;			//double
    cout <<  2.18F << endl;			//float
    cout <<  2.18L << endl;			//long double

转义字符

在 C++ 中,转义字符(Escape Sequences) 是以反斜杠(\)开头的特殊字符,用于表示无法直接输入的字符(如换行符、制表符等)或具有特殊含义的字符(如引号、反斜杠等)。转义字符通常用于字符串或字符常量中。

常用转义字符列表

转义字符描述
\n换行符(Newline),将光标移动到下一行的开头。
\t水平制表符(Tab),将光标移动到下一个制表位。
\\反斜杠(Backslash),用于表示一个反斜杠字符。
\'单引号(Single Quote),用于表示一个单引号字符。
\"双引号(Double Quote),用于表示一个双引号字符。
\?问号(Question Mark),用于表示一个问号字符。
\a响铃符(Alert),发出系统提示音(通常是“嘟”声)。
\b退格符(Backspace),将光标向左移动一个字符。
\r回车符(Carriage Return),将光标移动到当前行的开头。
\f换页符(Form Feed),用于打印机换页,或在终端中清屏。
\v垂直制表符(Vertical Tab),将光标移动到下一个垂直制表位。
\0空字符(Null Character),表示字符串的结束(常用于 C 风格字符串)。
\ooo八进制转义字符,ooo 是一个 1 到 3 位的八进制数。
\xhh十六进制转义字符,hh 是一个 1 到 2 位的十六进制数。
    cout << '\101' << '\n'; 	//101为八进制 
    cout << '\x41' << '\n';		//41为十六进制
    cout << '\t' << 't' << '\n';//在下一个制表位输出 t 
    cout << '\"' << '\n';		//输出双引号 " 
    cout << '\'' << '\n';		//输出单引号 ' 
    cout << '\\' << '\n';		/*输出反斜线  \ */
    cout << '\a';				//响铃 
    cout << "abcd" << '\b' << '\b' << '*' << '\n';	//演示退格 

字符串常量

是由一对双引号“”括起来的若干字符,有些字符串需要借助转义字符才能正常输出。

Bool型常量

bool型常量只有两个:true (真) 和 false (假)。

#include <iostream>  
using namespace std;
int main()
{
    cout << true << "  "; 	// 输出true 
    cout << false << endl; 	// 输出false 
    return 0; 
 }

运行输出:

可知C++中true用1表示,flase用0表示。

符号常量

C++中可以使用 宏定义 和 const 来定义符号常量:

#define PI 3.14
const float pi=31.4

变量

在程序运行时,值可以变化的量。在程序中定义的每个变量都要在内存中分配存储空间,变量名与其分配的内存空间相关联,因此可以通过变量名得到这个内存空间中的值,也可以对其进行修改。

此作者没有提供个人介绍
最后更新于 2025-02-06