bosthhe1 / cpushpush

0 stars 0 forks source link

c++初识 #1

Open bosthhe1 opened 1 year ago

bosthhe1 commented 1 year ago
在c++中
#include<iostream> //这里的i是代表in,o代表out ,stream为数据流
using namespace std;
namespace LOL//这里感觉和结构体相似(不太懂)
{
    int ask = 10;
}
int main()
{
    cout << "LOL的攻击是" << LOL::ask<<endl;
//cout是为输出函数,endl是为结束并换行,这个l代表换行
//这里与c语言相差很大,c语言中输出类型值,需要是什么类型如%d,在双引号中(“ ”)如果出现如%d,才能实现打印对于的类型,但是c++中,不用输入类型。
//在(<<),有多重定义,如解引用操作符(*),这里<<和cout配合使用代表的是为打印字符
//在双冒号(::)中,是为域操作符,是准确寻找在这个域下的值。同时也可以代表全局
    system("pause");
}
bosthhe1 commented 1 year ago

4.7 const增强 4.7.1 C语言中const是伪常量,可以通过指针修改 4.7.2 C++中const会放入到符号表中 4.7.3 C语言中const默认是外部链接,C++中const默认是内部链接(只能在本文件内部使用,如果需要外部链接,需要加上extern) 4.7.4 Const以下几种分配内存情况(一般的const是分配到符号表,不会分配给内存,但是只要分配了内存,就可以通过指针来修改) 4.7.4.1 对变量取地址,会分配临时内存(const int a = 10;int p = (int )a;//这里的const int修饰a之后,a的类型变为const int 而不是int,所有对其取地址需要强制类型转换.) 4.7.4.2 extern关键字下的const会分配内存 4.7.4.3 用普通变量初始化const变量(int a = 10; const int b = a;这样会分配内存) 4.7.4.4 自定义数据类型会分配内存(如自定义结构体struct ,const struct SL不能直接修改,但是可以用对于的指针修改) 4.7.5 尽量用const代替define 4.7.5.1 define宏没有作用域概念 (const 有作用域,在函数内部,随函数生命周期变化,define是全局引用) 4.7.5.2 define宏常量没有类型(如 define Date 100;这里的是将Date定义为100,但是这个100不确定类型,不知道代表的是int还是char,const int Date =100,这里就是int类型) 5 引用基本语法 5.1.1 用途起别名(int a = 10;int &b = a;) 5.1.2 Type &别名 = 原名 5.1.3 引用必须初始化 5.1.4 一旦初始化后 不能修改 5.1.5 对数组建立引用(int arr[10]={0};int (&a)[10]=arr;) 5.2 参数3种传递方式 5.2.1 值传递 5.2.2 地址传递 5.2.3 引用传递(就相当于将本身传过去,没有拷贝和地址,就是该元素) 5.3 注意事项,不要返回局部变量的引用(因为局部变量的生命周期随着函数的结束死亡,所有引用局部变量会引发内存泄漏的问题) 5.4 如果函数返回值是引用,那么函数的调用可以作为左值()(int &DateA(){int a = 0;return a ;} DateA()=1000;) 这里是将函数DateA()赋值1000 ,就是将a赋值1000) 5.5 引用的本质 就是一个指针常量(在使用引用的过程中,我们写的是int a = 10;int &b = a;编译器会自动将int &b = a编译成int* const b = &a;所以本质上还是对接的地址,这里是不能修改b的指向,所以能看出b只能初始化一次,不过b的值可以修改) 6 指针的引用 6.1 用一级指针引用 可以代替二级指针(如传一级指针的地址,可以用二级指针接受,也可以用引用来接受 (DateB(&p);调用函数传指针p的地址) (void DateB(int *p); 这是二级指针接受) (void DateB(int &p);这是引用接受)) 7 常量引用 7.1 使用场景 修饰形参为只读 7.2 const int &a = 10;会分配内存