C++入门篇三
引用:&
&放在左边就是引用,放在右边就是取地址
int main() {
//引用的类型必须相同,一经引用,不可以在被引用
int a = ;
int &b = a;//b引用a之后,两个同时都会改变,此时b已经指向a了,如果在来一个c的话,不能在去指向c。b和a的类型必须相同
b = ;//必须初始化,int就是初始化,实质上是*b=304,默认会加上*
printf("a:%d,b:%d\n", a, b);
}

给数组起别名:
//给数组起别名
int main() {
int arr[];
for (int i=;i < ;i++) {
arr[i] = i;
}
//用&引用,起别名
int (&parr)[] = arr;//用parr引用arr,相当于是arr重新赋值给了parr
for (int i = ;i < ;i++) {
cout << parr[i] << endl;
}
}

第二种方式起别名,typedef
//第二种方式起别名
typedef int Arrpy[];
Arrpy &parr2 = arr;
for (int i = ;i < ;i++) {
cout << parr2[i] << " ";
}
cout << endl;

//尽量使用const替代define
//define宏常量没有类型概念
//define宏没有作用域概念
参数的传递方式:
值传递:
void swap1(int a,int b) {
int temp = a;
a = b;
b = temp;
}
void s1(){
int a = ;
int b = ;
swap(a, b);//传递;两个值进去
cout << "a:" << a << " b:"<<b << endl;
}
指针传递:
//指针传递
void swap2(int *a,int *b) {
int temp = *a;
*a = *b;
*b = temp;
} void s2() {
int a = ;
int b = ;
swap2(&a, &b);
cout << "a:" << a << "b:" << b << endl; }
运行结果:
引用传递:
//引用传递
void swap3(int &a,int &b) {
int temp = a;
a = b;
b = temp;
}
void s3() {
int a = ;
int b = ;
swap3(a, b);
cout << "a:" <<a << "b:" << b << endl; }
int main() {
s3();
}
如果函数的返回值是引用的话,那么可以是作为左值的操作
int & test07(){
static int a = ;
return a;
}
int main() {
int &res = test07();//内部就是int * const res=&test07();内部就是一个指针常量
cout << res <<endl;
}
注意:不要返回函数局部变量的引用
引用的本质就是在C++内部实现的指针的常量,指针的本质就是一个指针常量
利用指针来开辟内存空间:
struct Person2
{
int age;
string name;
}; //利用指针来开辟空间
void test10(Person2* &p) {//这边引用,p就是传过来的指针,就是引用
p = (Person2*)malloc(sizeof(Person2));
p->age = ;
}
int main() {
Person2 *p1=NULL;
test10(p1);//相当于传了一个指针过去,&p1>>>>>>>
cout << "age" << p1->age << endl;
}

用指针来接受:**p
void malloc1(Person2 **p) {
//用指针来接收,**p就是person2对象,*p就是person2指针,p就是person对象的指针的指针
*p = (Person2*)malloc(sizeof(Person2));//强制转换
(*p)->age = ;
cout << "age:" << (*p)->age << endl;
}
void test11() {
Person2 *p1=NULL;
malloc1(&p1);//
}
int main() {
test11();
}

C++入门篇三的更多相关文章
- 【SSRS】入门篇(三) -- 为报表定义数据集
原文:[SSRS]入门篇(三) -- 为报表定义数据集 通过前两篇文件 [SSRS]入门篇(一) -- 创建SSRS项目 和 [SSRS]入门篇(二) -- 建立数据源 后, 我们建立了一个SSRS项 ...
- 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息]
三.使用Azure AD管理用户信息 在上一章我们采用OpenID的方案和Azure AD交互进行身份验证,本章节我们继续了解如何在Azure AD中创建用户,列出用户信息,修改用户信息和删除用户信息 ...
- 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息--3.5 Delete删除用户]
3.5 Delete删除用户 删除也是通过ObjectID获得对象进行删除 [Authorize] public async Task<ActionResult> Delete(strin ...
- 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息--3.4 Edit修改用户信息]
3.4 Edit修改用户信息 我们用FormCollection简化了表单提交,非常方便的进行用户信息修改. [HttpPost, Authorize] public async Task<Ac ...
- 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息--3.3 Details用户详细信息]
3.3 Details用户详细信息 用户详细信息是通过objectId获取.代码如下 public async Task<ActionResult> Details(string obje ...
- 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息--3.2 Create创建用户]
3.2 Create创建用户 [HttpPost, Authorize] public async Task<ActionResult> Create( [Bind(Include = & ...
- 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息--3.1 Index用户列表]
3.1 Index用户列表 或许当前域下的用户列表 [Authorize] public async Task<ActionResult> Index() { var userList = ...
- Android攻城狮学习笔记—入门篇三
第十章 CheckBox 与其他控件类似 有自己的监听方法 实现监听 并定义被选中或取消后的操作 第十一章 RadioGroup和RadioButton RadioGroup是RadioButton的 ...
- 【SSRS】入门篇(四) -- 向报表添加数据
原文:[SSRS]入门篇(四) -- 向报表添加数据 定义好数据集后 [SSRS]入门篇(三) -- 为报表定义数据集 ,就可以开始设计报表了,将要显示在报表的字段.文本框.图像和其他项从工具箱拖放到 ...
随机推荐
- CodeVs 1615 数据备份
题目:数据备份 链接:Here 题意:有n个点在一条线上,每次连线可以连接两个点(每个点只能被连一次),要求找出m个连线,他们的和最小(连线权值就是两点距离),输出最小的和.给出n.m和每个点的坐标. ...
- win10启动nginx但是访问不了
首先验证配置,是否正常:nginx -t 我这里配置正常. 我的原因是设置了代理,打开IE浏览器,设置>Internet选项>连接>局域网设置>代理删除.
- 其它综合-企业级CentOS 7.6 操作系统的安装
企业级CentOS 7.6版本安装过程 1. 环境: 使用的虚拟机软件是VMware,版本为 12 .(网上一搜一大推,在此不再演示.) 使用的ISO镜像为CentOS7.6.(自己也可以在网上搜镜像 ...
- Eclipse常用设置及快捷键
1. Eclipse常用设置 1.1 代码自动提示 选择菜单:Window -> Preferences -> Java -> Editor -> Content Assist ...
- sql server 一直提示正在还原
restore database 数据库名称 with recovery
- linux 实现centos7在线升级最新版本内核
Kernel (内核)是操作系统的核心,掌握所有硬件设备的控制权,也就是说,你所希望计算机帮你完成的各项工作,都需要通过内核的帮助才能完成,当然,如果我们想完成的某个功能是内核没有的,则内核不会操控 ...
- Linux 学习 (四) 帮助命令
Linux达人养成计划 I 学习笔记 man 命令 获取指定命令的帮助 man的级别 1:查看命令的帮助 2:查看可被内核调用的函数的帮助 3:查看函数和函数库的帮助 4:查看特殊文件的帮助(主要是/ ...
- 使用nginx部署网站
前面的话 如果服务器只需要放置一个网站程序,解析网站到服务器的网站,网站程序监听80端口就可以了.如果服务器有很多应用,借助nginx不仅可以实现端口的代理,还可以实现负载均衡.本文将详细介绍前端及n ...
- DIV正确打开方式 ~~~~哈哈哈
<div style='margin-left:25px;margin-right:25px;margin-top:10px;height:350px;min-height:50px;backg ...
- Dijkstra算法——计算一个点到其他所有点的最短路径的算法
迪杰斯特拉算法百度百科定义:传送门 gh大佬博客:传送门 迪杰斯特拉算法用来计算一个点到其他所有点的最短路径,是一种时间复杂度相对比较优秀的算法 O(n2)(相对于Floyd算法来说) 是一种单源最短 ...