C中 * 、*&、 **、& 区别,以及什么时候用
来源:互联网 发布:ubuntu arm版 编辑:程序博客网 时间:2024/05/22 06:44
使用示例:
void foo1(int * ptr){ *ptr = 1; ptr = NULL; //不会改变原指针所指向的对象}void foo2(int *& ptr){ *ptr = 2;// ptr = NULL; 会改变原指针所指向的对象}void foo3(int** ptr){// *ptr = 3; 指针不能这样直接赋值 **ptr = 3;// *ptr = NULL; 会改变原指针所指向的对象}void foo4(int &e){ e = 5;}int main(){ int *t,a = 1; int b = 2; t = &a; printf("t:%d\n",*t); foo1(t); printf("foo1:%d\n",*t); foo2(t); printf("foo2:%d\n",*t); foo3(&t); printf("foo3:%d\n",*t); printf("\n"); printf(“b:%d\n",b); foo4(b); printf(“b:%d\n",b); return 0;}
运行结果:t:1foo1:1foo2:2foo3:3b:2b:5
总结:
注意区分 指针所指向的对象 和 指针所指向的对象的值,上面几个方法均可改变指针所指向的对象的值,但一定能改变指针所指向的对象(即不一定能改变指针箭头所指的方向)。
*
指针的变量,传入的只是地址值,不能改变原指针所指地址。只想改变所指对象值时使用。
**
指向指针的指针,纯C内容,功能和*&一样,使用较麻烦。
&
&是C++内容,表示引用,操作它即是在操作原对象,可看作传入对象的别名,先理解&再理解*&。这个和取地址不一样,概括为 和类型在一起的是引用,和变量在一起的是取址。
*&
*&表示指针的引用,操作它即是在操作原指针,可看作传入指针的别名。即可改变原指对象的值,又可改变原指针所指对象。
可扩展:C++中引用&与取地址&的区别分析
阅读全文
1 0
- C中 * 、*&、 **、& 区别,以及什么时候用
- php中get和post的区别以及什么时候用get什么时候用post详解
- c 中分号的应用详解 以及 什么时候该用{} 以及shell脚本中的分号
- iOS中assign,copy,retain之间的区别以及weak和strong的区别,NSString什么时候用copy,什么时候用strong
- malloc calloc realloc,new区别联系以及什么时候用
- malloc calloc realloc,new区别联系以及什么时候用
- alloca malloc calloc realloc,new区别联系以及什么时候用
- Linux中什么时候用包名、什么时候用包全名、以及RPM包的安装、升级与卸载
- C中什么时候使用static?
- JAVA中对象什么时候死亡以及什么时候执行finalize()方法
- Swift 中什么时候用? 什么时候用!
- 在c++中, 什么时候用*什么时候用&?
- c++中关于什么时候用“->”什么时候用“.”
- 谈谈HtmlControl与WebControl的区别以及各自应该什么时候用
- 谈谈HtmlControl与WebControl的区别以及各自应该什么时候用
- 谈谈HtmlControl与WebControl的区别以及各自应该什么时候用
- 谈谈HtmlControl与WebControl的区别以及各自应该什么时候用
- 谈谈HtmlControl与WebControl的区别以及各自应该什么时候用
- MongoDB之数据建模
- mac 安装php
- 关于滚动条滚动到指定位置触发jq事件和html锚点
- mysql的limit性能优化
- SYSTECH USB-CAN总线分析仪Linux驱动安装篇(树莓派)
- C中 * 、*&、 **、& 区别,以及什么时候用
- k8s-ceph-statefulsets-storageclass-nfs 动态卷有状态应用实践
- 发送有序广播
- linux基本命令
- Android Studio运行问题:the SDK platform-tools version(24) is too old to check APIs cimpiled with API 25
- fastjson反序列化漏洞分析
- openssl生成ca证书,以及过程中遇到的问题总结
- 你凭什么能过上你想要的生活?
- 机器视觉开源代码集合(转)