名称空间
#include <iostream>
using namespace std;
//一
using namespace name
int main()
{
myfun();
}
//二
int main()
{
name::myfun();
}
cout
cout<<"hello"<<endl;//endl:换行符
cin
int a=0;
cin>>a;//将输入内容放入变量a
cin>>a>>b;//连续输入使用空格、回车、TAB健来分隔
新的类型
string(字符串类型)
string mystr="hello";
bool
表示真假。非零值为--true,零为--false
内存区域划分
- 代码区:代码的执行指令、汇编指令(只读)
- 全局区(data、bss):全局变量、static修饰的变量、部分常量(const修饰的全局常量,字符串常量)
- 栈:局部变量、函数返回值、形式参数
- 堆:程序员手动开辟、释放
程序在编译后会生成一个可执行文件
程序执行前,文件中包含:代码区、全局区
执行过程中,文件主要包含:堆、栈
const常量
const type name=value;
const int *p:p的指向可以修改,不能间接修改指向的值(*p不能修改)
new开辟空间
在堆上开辟空间,返回值是空间的首地址。(内部也是调用malloc完成的,只是在这个基础上做了其他的维护)
释放使用delete来完成
//C操作
int *p=(int*)malloc(sizeof(int));
//C++操作:指针类型 首地址名=new 数据类型;
int *q=new int;
//在单独开辟空间时可以初始化变量值
int *q=new(10);//将空间值初始化为10
//用[]来标识数组空间开辟
int *q_arr=new int[10];
delete空间释放
//delete堆空间首地址
int *p=new int(10);
delete p;
p=NULL;
//数组的释放需要使用delete[]
delete[]p_arr;//p_arr表示数组空间首地址
new练习
https://blog.csdn.net/weixin_45485670/article/details/124127057
C++引用
作用:减少指针带来的复杂操作,增强代码的可读性
意义:就是给变量起一个别名
//<type>&another name=name,&:引用标识符
int a=9;
int &a_r=a;
引用的适用场景
- 引用作为函数参数时,在函数内部可以直接修改实参,不需要传地址。
- 引用是返回值时,函数调用可以作为左值,不能返回局部变量的引用
int &fun()
{
static int a=23;
return a;
}
- 常量引用
- 在函数传参时适用,防止误操作,修改实参
int &a=12;//引用常量时不可以直接这样写
const int& c_b=13;//可以 等价于const int c_b=13;
//其中原理
const int temp=13;
const int& c_b=temp;//temp被编译器屏蔽
//由此c_b变为常量13,c_b不能被修改
void fun(const int& r_a)
{
r_a=20;
}
int main()
{
int a=1;
fun(a);
cout<<a;
return 0;
}
- 引用的本质:一个指针常量的操作
int *const p;//指针常量:不能改变p的指向
const int *p;//常量指针:不能通过*p修改值
const int *const p;//什么都不能改变
int a=13;
int &r_a=a; //int *const r_a=&a;
r_a=89; //*r_a=89;
int b=87;
r_a=b; //只是单纯的赋值
//本质
int a=13;
int *const r_a=&a;
*r_a=89;
//常量引用
const int &r_b=15;//const int *const r_b=15;//什么都不能改