[C++][基础]1_变量、常量和基本类型

简介:

 

1.1     算术类型

类型

最小存储空间(位)

bool

1

char

8

wchar_t

16

short

16

int

16

long

32

float

6位有效数字

double

10位有效数字

long double

10位有效数字

 

1.2     常量

不能修改的值成为常量。

 

1.3     变量

与常量相反,是可以修改的值。

 

1.4     引用

引用主要用于函数的形参。引用必须用与该引用同类型的对象初始化。

1.4.1          引用是别名,所有针对引用的操作实际上都是作用在该引用的绑定对象上。引用一旦绑定对象后,不能再绑定到其他对象。

1.4.2          const引用

const引用是指向const对象的引用。

Eg:      const int ival = 1024;

            const int& refval1 = ival;          //ok

            int& refval2 = ival;                     //error

 

1.5     const限定符

const可以用来定义常量。

 

1.6     typedef

用来定义类型的同义词:

Eg:   typedef string StuName;

 

1.7     数组

1.7.1          数组的定义和初始化

数组的维数必须使用大于等于1的常量表示数组的维数必须在方括号内定义。

1.       初始化数组元素

如果没有显示初始化元素, 则数组元素会像普通变量一样初始化:

●在函数体外定义的内置数组,其元素初始化为0

●在函数体内定义的内置数组,其元素无初始化;

●不管在什么位置,如果元素类型为类,则自动调用该类的默认构造函数,如果没有默认构造函数,则必须提供显示初始化。

2.       特殊的字符数组

使用一组字符字面值初始化字符数组时,一定要记得添加结束字符串的空字符。

Eg:

const char cz[6] = "Daniel";      //Daniel is 7 elements

3.       数组不可以直接复制或赋值

Eg:

int ia[] = {0, 1, 2};

int ia2[](ia);      //error

int ia3[3];

ia3 = ia;             //error

 

1.7.2          数组的操作

数组下标的正确类型为size_t

 

1.8     指针

1.9     C风格字符串

1.9.1          C风格字符串的使用

1.       标准库函数

strlen(s)

strcmp(s1, s2)

strcat(s1, s2)

strcpy(s1, s2)

strncat(s1, s2, n)

strncpy(s1, s2, n)

2.       永远不要忘记字符串结束符null

Eg:

char ca[] = {'C', '+', '+'};              //没有结束符

cout << strlen(ca) << endl;        //返回的数值不正确,结果不可预料

 

1.9.2          创建动态数组

1.       动态数组的定义

Eg:

int *pia = new int[10];

2.       初始化动态分配的数组

Eg:

string *psa = new string[10];           //10个未初始化的string

int *pia = new int[10];                        //10个未初始化的int

int *pia2 = new int[10]();          //所有元素初始化为0

3.       const对象的动态数组

必须为这个数组提供初始化;因为每个数组元素都是const对象,所以无法赋值。

Eg:

const int* pci_bad = new const int[10];           //error: 未初始化

const int* pci_ok = new const int[10]();  //ok: 所有元素默认初始化为0

const string* pcs_ok = new const string[10]; //ok: 初始化10个空字符串

4.       允许动态分配空数组

Eg:

size_t size = getSize();

int* p = new int[n];

for (int* q = p; q != p + size; q++)

         /* process */

5.       动态空间的释放

动态分配的内存必须释放,否则会造成内存泄露,耗尽资源。

 Eg:

delete[] pia;

6.       动态数组的使用

 

1.9.3          新旧代码兼容

1.       混合使用string标准库和C风格字符串

Eg:

         string str = "hello";

char* cStr = str.c_str();

2.       使用数组初始化vector

Eg:

const size_t ARR_SIZE = 6;

int aiData[ARR_SIZE] = {1,2,3,4,5,6};

vector<int> ivec(aiData, aiData + ARR_SIZE);



本文转自静默虚空博客园博客,原文链接:http://www.cnblogs.com/jingmoxukong/articles/2181405.html,如需转载请自行联系原作者

相关文章
|
10月前
|
存储 C++
C++语言中指针变量int和取值操作ptr详细说明。
总结起来,在 C++ 中正确理解和运用 int 类型地址及其相关取值、设定等操纵至关重要且基础性强:定义 int 类型 pointer 需加星号;初始化 pointer 需配合 & 取址;读写 pointer 执向之处需配合 * 解引用操纵进行。
763 12
|
JavaScript 前端开发 Java
通过Gtest访问C++静态、私有、保护变量和方法
通过Gtest访问C++静态、私有、保护变量和方法
486 1
|
存储 安全 C++
C++:指针引用普通变量适用场景
指针和引用都是C++提供的强大工具,它们在不同的场景下发挥着不可或缺的作用。了解两者的特点及适用场景,可以帮助开发者编写出更加高效、可读性更强的代码。在实际开发中,合理选择使用指针或引用是提高编程技巧的关键。
285 1
|
C++
【学习笔记】【C/C++】 c++字面值常量
【学习笔记】【C/C++】 c++字面值常量
246 1
|
C语言 C++
实现两个变量值的互换[C语言和C++的区别]
实现两个变量值的互换[C语言和C++的区别]
315 0
|
安全 C++
C++一分钟之-互斥锁与条件变量
【6月更文挑战第26天】在C++并发编程中,`std::mutex`提供互斥访问,防止数据竞争,而`std::condition_variable`用于线程间的同步协调。通过`lock_guard`和`unique_lock`防止忘记解锁,避免死锁。条件变量需配合锁使用,确保在正确条件下唤醒线程,注意虚假唤醒和无条件通知。生产者-消费者模型展示了它们的应用。正确使用这些工具能解决同步问题,提升并发性能和可靠性。
399 4
【C++】string类的使用④(常量成员Member constants)
C++ `std::string` 的 `find_first_of`, `find_last_of`, `find_first_not_of`, `find_last_not_of` 函数分别用于从不同方向查找目标字符或子串。它们都返回匹配位置,未找到则返回 `npos`。`substr` 用于提取子字符串,`compare` 则提供更灵活的字符串比较。`npos` 是一个表示最大值的常量,用于标记未找到匹配的情况。示例代码展示了这些函数的实际应用,如替换元音、分割路径、查找非字母字符等。
|
程序员 编译器 C++
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
179 0
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
编译器 C++ 容器
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
553 12