栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

const和三种类型传递

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

const和三种类型传递

局部静态变量:第一次运行到定义时初始化,程序终止销毁

参数传递:

值传递:

函数对形参的所有操作不会影响实参;

指针传递:

执行拷贝操作时拷贝的是指针的值。拷贝到后两个指针是不同的指针;

void reset(int *ip)

{

​ *ip = 0; //改变的是指针所指的对象

​ ip = 0; //改变的是ip的局部变量,实参并未改变

}

int main()

{

​ int i = 40;

​ reset(&i); //改变的是 i 的值并非是 i 的地址

​ std::cout << "i = " << i << std::endl;

}

引用传递:

void reset(int &i)

{

​ i = 0;

}

int main()

{

​ int j = 42;

​ reset(j); //引用传递,值会被改变

​ std::cout << j << std::endl;

}

指针传递和引用传递的区别:

指针是存了值的地址的值,也还是实现了值传递;

引用传入的是变量名称,相当于在函数内部使用了外部的别名,操作的依然是变量本身;

const 修饰变量:

const 修饰变量,可以阻止变量发生改变,但是在定义一个const的时候通常需要直接初始化;

    只有一个const,如果 const 位于 * 左侧表示指针所指的数据是常量,不能通过解引用修改数据;指针本身是变量可以指向其他内存单元;只有一个const,如果 const 位于 * 右侧,表示指针本身是常量,不能指向其他内存地址,但是指针所指的数据可以通过解引用进行修改;

const 修饰函数参数:

const经常用于修饰引用类型参数使传递的参数不可发生改变;

void test(const A &a);


最主要的就是引用传递的效率优于值传递,为了保证实参不会发生变化所以使用const修饰引用;

参考:
https://blog.csdn.net/aiqianqi1796/article/details/101835883

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738068.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号