c 到 c++
目录:
1、引用相关
2、const关键字
3、动态内存分配
1、引用相关:
/*
概念:某个变量的引用等价于这个变量的别名
格式:类型名 & 引用名 = 某变量名
作用:
1、 函数形参引用
2、引用作为函数返回值
注意事项:
1、定义引用时,一定要对其初始化
2、初始化后,不能再引用别地变量
3、引用只能引用变量
4、不能通过常引用去修改其引用的内容
常引用和非常引用的转换:
const T和T &是不同的类型!!!
*/
//作用:
//1、 函数形参引用
void swap(int &a,int &b){
int temp=a;
a=b;
b=temp;
}
//2、引用作为函数返回值
int &setvalue(){return n;}
int main() {
setvalue()=40;//输出n结果为40
cout<<n;
return 0;
//即对函数的赋值,等价于对返回值n赋值
}
2、const关键字
/*
用法:
1、定义常量
2、定义常量指针
(a)不可通过常量指针修改其指向的内容
(b)不能把常量指针赋值给非常量指针,反过来可以
(c)函数参数为常量指针是,可避免函数内部不小心改变参数指针所指地方的内容
3、定义常引用
(a)不能通过常引用修改其引用变量
*/
//2、定义常量指针:
//(a)不可通过常量指针修改其指向的内容
int n,m;
const int *p=&n;
*p=5;//编译出错
4=5;//ok
p=&m;//ok,常量指针指向的地址可以改变
//(b)不能把常量指针赋值给非常量指针,反过来可以
const int *p1;
int *p2;
p1=p2;//ok
p2=p1//error
p2=(int *)p1;//ok,强制转换后可以
//(c)函数参数为常量指针是,可避免函数内部不小心改变参数指针所指地方的内容
void MyPrintf(const char*p){
strcpy(p,"this");//编译出错
printf("%s",p);//ok
}
//3、定义常引用
//(a)不能通过常引用修改其引用变量
int n;
const int &r=n;
r=5;//error
n=4;//ok
3、动态内存分配
/*
news用法:
1、分配一个变量
p=new T;
2、分配一个数组
p=new T[N];
配套操作:delete
*/
#include<iostream>
using namespace std;
int main(){
//new用法:
//1、分配一个变量
int *pn;
pn=new int;
*pn=5;
delete p;//释放内容
//2、分配一个数组
int *pn;
int i=5;
pn=new int[i*20];
delete[]p;//delete [] 指针
return 0;
}
随机推荐
- python--字典基本操作
字典 格式 key :value # string list dict# 1.取数据方便# 2.速度快, 定义一个空字典: d = dict() 或者 d = { } infos = {'n ...
- 基于Memcached的Nginx服务器集群session共享
原料:jdk1.8,tomcat7,nginx1.16,memcached-1.2.6,Mem-Tomcat需要的jar包,基于windows7.所有的点击以下链接可下载 链接:https://pan ...
- rabbitMQ基于spring-rabbitnq
一.什么是MQ MQ全称为Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递 ...
- 在linux下执行git clone、git pull 、git push等操作免密
1. 通过ssh密钥实现 ssh-keygen -t rsa -C "你的邮箱" -f "自己定义的目录" 打开: id_rsa.pub ,将文件内容复制到 g ...
- k8s安装部署成功
- java十大排序
0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决 ...
- 详解vue生命周期及每个阶段适合进行的操作
VUE生命周期的四个阶段 create 创建 -------- 创建vue实例并初始化 mount 挂载 -------- 把vue实例和视图进行关联 update 更新 ------- 监听数据与视 ...
- SMBMS项目-准备工作
项目搭建准备工作 1.基础准备工作 搭建一-个maven web项目 配置Tomcat 测试项目是否能够跑起来 导入项目中会遇到的jar包 jsp,Servlet,mysq|驱动, jstl, sta ...
- Hive-拉链表
一.问答介绍 1.什么是拉链表? 维护历史状态,以及最新状态数据的一种表,拉链表根据拉链粒度的不同,实际上相当于快照,只不过做了优化,去除了一部分不变的记录,通过拉链表可以很方便的还原出拉链时点的客户 ...
- kali下一些代理工具的简单描述
前言 最近几天了解了kali中一些代理工具的基本使用,做一个小小的总结,kali操作系统的官网为 www.kali.org,感兴趣的可以去官网下载镜像,如何安装这里就不在讲解了,百度有很多教程.新手这 ...