C++基础复习笔记(1)

一、using namespace std

hello world代码如下

#include<iostream>
 using namespace std;
 int main()
 {
    cout << "hello world" << endl;
    system("pause");
        
        return 0;
}

C++标准程序库中的所有标识符都被定义于一个名为std的namespace中,
使用using namespace std ,可以让C++的标准程序库的标识符(如cout、cin、endl)曝光,当作全局变量使用。

二、常量指针和指针常量

//const修饰的是指针,指针指向可以改,指针指向的值不可以更改
const int * p1 = &a; 
p1 = &b; //正确
//*p1 = 100;  报错
    
//const修饰的是常量,指针指向不可以改,指针指向的值可以更改
int * const p2 = &a;
//p2 = &b; //错误
*p2 = 100; //正确

常量指针 const int * p1(const常量 int* 指针)为指向常量是指针,因此指针的指向可以改变,但是常量值无法改变;
指针常量 int * const p1(int* 指针const常量)为指针是常量,即指针本身的指向无法改变,但指向的内容可以改变,常见的指针常量是使用数组名arr,数组名的内容(arr[i])可任意改变,但无法改变数组名arr的指向。

三、内存四区

C++程序执行时,其内存模型大致分为四个区
代码区:存放代码的内存空间,由操作系统管理,只读
全局区:存放全局变量、静态变量以及常量,程序运行结束后释放
栈区:由编译器自动分配和释放,存放函数参数和局部变量,函数运行结束时释放
堆区:由程序员分配和释放,若程序员不释放,则程序运行结束时由操作系统回收。

四、new操作符

C++程序中利用new 数据类型在堆区开辟空间,在任何函数内使用new都是在堆空间开辟,利用delect 指针在堆区释放空间。

单个内存空间开辟

在堆区开辟一个整形空间,并存放数值10,返回的地址信息由指针p接收;使用delete p释放p指向的内存。

int* p = new int(10);
delete p;

数组内存空间开辟

在堆区开辟10个连续单元的空间,作为数组arr[10];使用delete[] arr 释放开辟的数组。

int arr = new int[10];
delete[] arr;

五、引用

数据类型 &别名 = 原名
引用必须初始化,即定义后就要赋值原名,且只能赋值一次,后面无法修改。
引用是给变量取别名,且该改别名的值也会对原变量的值进行修改。

使用引用作为函数的引用传递可以起到修改实参的作用,且可简化指针

viod fun (int& a, int& b)
{

}

调用 fun(a, b);

引用作为函数的返回值

返回的引用必须是函数的静态变量或者是全局变量

//返回静态变量引用
int& test02() {
    static int a = 20;
    return a;
}

int& b = test02();

使用引用作为返回的函数可以做左值;
test01() = 100;
a的函数test01的引用返回,所以修改的是a的值,赋值后a = 100;

C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了

//发现是引用,转换为 int* const ref = &a;
void func(int& ref){
    ref = 100; // ref是引用,转换为*ref = 100
}

常量引用

//int& ref = 10; 引用本身需要一个合法的内存空间,因此这行错误
//加入const就可以了,编译器优化代码,int temp = 10; const int& ref = temp;
const int& ref = 10;
//函数中利用常量引用防止误操作修改实参
int a = 10;
showValue(a);

//引用使用的场景,通常用来修饰形参
void showValue(const int& v) {
    //v += 10;
    cout << v << endl;
}

int main() {

    //int& ref = 10;  引用本身需要一个合法的内存空间,因此这行错误
    //加入const就可以了,编译器优化代码,int temp = 10; const int& ref = temp;
    const int& ref = 10;

    //ref = 100;  //加入const后不可以修改变量
    cout << ref << endl;

    //函数中利用常量引用防止误操作修改实参
    int a = 10;
    showValue(a);

    system("pause");

    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 注意事项 对于不带.h的头文件,所有的符号都位于命名空间 std 中,使用时需要声明命名空间 std;对于带.h的...
    Bystander_1996阅读 259评论 0 0
  • 最近看到自己之前刚开始学习的时候记的一些笔记就稍微整理了一下 c语言里的结构体和c++里的结构体有什么区别? 答:...
    你猜卟透_faa8阅读 954评论 0 0
  • 一、函数的提高 1、函数默认参数 函数可以在定义或者声明时设置默认参数(但只能选择其中一种),函数被调用时,有传参...
    llllllllee阅读 158评论 0 0
  • C语言知识点 C 中的注意点 对于C来讲,最麻烦的是不断的malloc 和 free。特别是对于三阶指针那种情况。...
    fatesnight阅读 760评论 0 0
  • 在Android OS上开发应用程序,Google提供了两种开发包:SDK(Software Developmen...
    Stan_Z阅读 1,320评论 1 5