引用作为函数参数的例子,有很多知识点。
来源:互联网 发布:淘宝店铺新手教程 编辑:程序博客网 时间:2024/05/16 05:55
程序里的解释是自己的一点心得,只是其他的知识点在百度上基本上都可以查到,而且讲得很好,typedef用法参考资料。
#include "stdafx.h"#include <iostream.h>#include <malloc.h>/*---线性单链表的存储结构-----*/typedef struct node{int data;struct node * next;}node,*list;/*---定义结构体的初始化函数----*///--注意这里的形参是实参的一个引用,//--即head是调用时()内变量的一个别名。void init(list &head){head = (list)malloc(sizeof(node));head->next = NULL;}int main(int argc, char* argv[]){node node1; //声明一个对象node1.data = 10; //初始化data数据成员list list1 = &node1; //定义一个list型变量也就是结构体指针cout<<list1->data<<endl; //此处输出的是10;cout<<list1->next<<endl;//一个未初始化的地址,不可预测init(list1); //调用初始化函数cout<<list1->data<<endl;//虽然分配了内存,但未初始化,不可预测cout<<list1->next<<endl;//此处应该输出的是NULL即0;return 0;}
运行结果:
而如果不使用引用,即init函数改成
void init(list head){head = (list)malloc(sizeof(node));head->next = NULL;}
则运行结果
我们发现调用init()函数前后list1中的数据成员并没有改变,这是因为,list1的值传进函数中head中后,head被malloc函数的返回值覆盖掉了,而head->next = NULL;修改的是新创建出来的node结构体内存块,当init()函数调用完了head就被释放了,而list1所指向内容没有被修改,这就是输出没有变化的原因了,但引用就不一样了,引用中,head是list1的一个别名,这样对head的修改同时也是对list1的修改,所以调用init()函数后输出是有变化的。
- 引用作为函数参数的例子,有很多知识点。
- C++常量引用作为函数参数的例子
- 4,将引用作为函数的参数有哪些特点
- 指针作为函数的参数,引用作为函数的参数
- 引用作为函数参数
- 引用作为函数参数
- 指针的引用作为函数参数有啥用?
- 作为函数参数的C++引用
- 将“引用”作为函数参数有哪些特点?
- 将“引用”作为函数参数有哪些特点?
- 将“引用”作为函数参数有哪些特点?
- C++指针,引用,常引用作为函数的参数
- C++ 引用与引用作为函数的参数
- 引用作为函数参数和常引用作为函数参数
- C++引用作为函数参数
- C++引用作为函数参数
- C++引用作为函数参数
- 将引用作为函数参数
- 获取应用安装路径,直接上代码!!!
- iOS 退出应用程序
- wp 遇到的错误
- android音频管理器(AudioManager)
- 手机PCB板设计注意事项
- 引用作为函数参数的例子,有很多知识点。
- 打印堆栈中的初始化信息
- zxing——二维码扫描库
- 每天一个linux命令(24):Linux文件类型与扩展名
- 在Oracle数据库中启动Scott用户的方法
- 每天一个linux命令(25):linux文件属性详解
- 怎样找到硬盘数据恢复软件把丢失的数据找回来
- WSDL 详解一
- Hibernate的主要体系结构,基本步骤,核心API,主键生成方式