C++个人学习笔记

本文详细介绍了C++中的基本概念,包括引用作为变量的别名,其特性及使用注意事项;指针的空指针表示、动态内存分配与释放;列表初始化的两种方式及其规则;类型转换的隐式与显式转换,特别是C++的`static_cast`用法;C++内存模型的栈、堆、全局/静态区和常量区的简要说明;常量与指针的区别,包括常量指针和指针常量的用法;以及一元作用域解析运算符在解决局部变量与全局变量冲突中的应用。
摘要由CSDN通过智能技术生成

仅以精简的内容供查询复习

一、C++语法

1、引用

引用:A reference is an alias for another variable. (引用就是另一个变量的别名)

int x;
int& y = x;

引用的性质:1)通过引用所做的读写操作实际上是作用于原变量上

                      2)引用必须在声明的时候初始化

                      3)引用一旦初始化,引用名字就不能再指定给其它变量

注意:在被调函数中改变引用变量的值,则改变的是实参的值

2、指针

空指针:C++11中引入保留字“nullptr”作为空指针

动态内存分配/管理:

1)c++中通过new运算符申请动态内存

new  <类型名> (初值);      //申请一个变量的空间
new  <类型名>[常量表达式];  //申请数组

如果申请成功,返回指定类型内存的地址

如果申请失败,抛出异常,或者返回空指针(nullptr)(C++11)

2)动态内存使用完毕后,要用delete运算符来释放

delete   <指针名>;    //删除一个变量/对象
delete []  <指针名>;  //删除数组空间

 3、列表初始化

1) Direct list initialization (直接列表初始化)

int x{4};             // int x = 4;
int ary[]{1,2,3};     // int ary[] = {1,2,3};
char s[]{"Hellow"};   // char s[] = "Hellow";

2) Copy list initialization (拷贝列表初始化)

int x = {4};
int ary[] = {1,2,3};
char s[] = "Hellow" // 此处{}可以省略

注意:列表初始化不允许“窄化”,即不允许丢失数据精度的隐式类型转换

4、类型转换

隐式类型转换(尽量避免) 与 显示类型转换

c风格:(type) value

c++:static_cast<type> value

int a = (int)2.5;            // c
static_cast<double>(1 / 2);  // c++

 5、简化的c++内存模型

1)Stack(栈)

        自动分配与释放

2)Heap(堆)

        由程序员分操作,不主动释放则程序结束时由OS回收

3)Global/Static(全局/静态区)

4)Constant(常量)

 6、常量与指针

常量:初始化后不可改变

指针:指针是一个地址,这些数据就叫做“指针所指的数据”或者“指针指向的数据”

Pointer to Constant (常量指针/常指针)

        指针所指向的内容不可以通过指针的间接引用(*p)来改变

const int x = 1;
const int* p1 = &x;   //指针 p1的类型是  (const int*)
*p1 = 10;             // Error!

Pointer Constant (指针常量)

        指针本身的内容是个常量,不可以改变

int x = 1, y = 1;
int* const p2 = &x; //常量 p2的类型是  (int*)
*p2 = 10;     // Okay!  x=10
p2 = &y;      // Error! p2 is a constant

 7、Unary Scope Resolution (一元作用域解析运算符)

局部变量名与全局变量名相同时,可使用 :: 访问全局变量

#include <iostream>
int v1 = 10;
int main() {
    int v1 = 5;
    std::cout << "local variable v1 is "  << v1   << std::endl;
    std::cout << "global variable v1 is " << ::v1 << std::endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值