| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C语言的传值和传址,指针的指针 -> 正文阅读 |
|
[C++知识库]C语言的传值和传址,指针的指针 |
函数调用的时候:传值和传址 二级指针: int a=5; int* p=&a;? int** p1=&p; printf("a=%d, *p=%d, **p1=%d", a, *p, **p1);? 结果是5,5,5 *p: p的值是a的地址,p指向a,*p就是看p这个地址上的变量值,*p是看p存放的地址上的变量值,不是看p这个变量值(p的变量值是地址,看p的变量值应该是看p的值,而不是通过*p的方式,*p是看指针变量p指向的地址上的变量值!) **p1也就是*(*p1),*p1就是看p1存放的地址上的变量值,p1的值是p的地址,所以*p1就是p的值,所以**p1就是*p=a。 *地址=占据这个地址的变量的值≠地址的值 **p1:*(*p1),p1放的是指针变量p的地址,所以*p1就是指针变量p *谁的地址=谁的值 传值:不改变主函数中实参的数值 传址:把主函数中变量的地址直接传给给其他函数使用,改变了主函数中实参实际的数值。 两者的区别就是:传值的话只在函数内部起作用,如果是传地址的话,经过一个函数过程,主函数中的实参就能够被实际地改变。 对于数组,因为数组通常来说占的内存是比较大的,系统不会像传值一样在函数的内存空间中再复制一块内存进行数值传递,而是直接把地址传进去,直接更改数组的实参数值。 系统对数组的内存比较苛刻。 另外还涉及到指针的指针: 传址:想通过函数实际地改变哪个实参的数值,就把这个实参的地址传进去。 指针的指针: 如果指针作为main主函数中的一个实参,并且想要改变指针的值,应该给函数形参传入的是main函数中实参指针的地址。 想要实际地改变哪个实参的变量,就传入该实参的地址,传址。 malloc-指针的指针-传址还是传值:注意:如果要通过函数调用把实参的数值改掉,传入的应该是实参的地址,而不是在被调用函数内拷贝一份内存,这份内存将会随着被调用函数的结束而消失。 malloc分配的内存需要被free才能释放,在函数内部申请malloc,即使函数结束,也不会释放这块内存。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:20:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |