关于函数传引用和传指针的见解,以线性表为例子
来源:互联网 发布:字幕打轴软件 编辑:程序博客网 时间:2024/06/09 22:38
一个函数包括返回类型,形参。函数总是会为传进来的实参创立一个副本,尽量不对原来的实参做改变。而以引用和指针类型作为新参则需另当别论。
1.形参为引用类型(我看过关于引用的定义最直白就是,就是变量本身,只不过是多了个名字而已,当然对其中任何一个名字去改变,会影响所有值改变)
typedef struct {Elemtype data[MAXSIZE];int length;}List;bool InitList(List &L){L.length=0;return OK;}bool listInsert(List &L,int i,Elemtype e){int k;if (L.length==MAXSIZE) return ERROR;if(i<0||i>L.length+1) return ERROR;if (i<L.length){for (k=L.length-1;k>=i;--k)L.data[k+1]=L.data[k];}L.data[i]=e;L.length++;return OK;}int main(){List LA;List LB;List LC;InitList(LA);InitList(LB);listInsert(LA,0,2);listInsert(LA,1,3);listInsert(LA,2,5);listInsert(LA,3,7);listInsert(LA,4,8);listInsert(LA,5,9);listInsert(LB,0,1);listInsert(LB,1,7);LA.length=6;LB.length=2;}形参类型为引用,在函数的任何修改将直接对实参本身做修改。
2.形参类型为指针(指针即某个内存块的地址,在32位机中,sizeof(int*)=sizeof(char*)=sizeof(int)=4个字节)
typedef struct LNode{Elemtype data;struct LNode* next;//下一个节点的地址}LNode,LinkList;//LinkList*是指向节点的指针类型,这里是指向头结点的指针类型()void createListHead(LinkList* _copy,int n){LinkList* p;int i;srand(time(0));_copy=(LinkList*)malloc(sizeof(LNode));_copy->next=NULL;for (i = 0; i < n; ++i){p=(LinkList*)malloc(sizeof(LNode));p->data=rand()%100+1;p->next=_copy->next;_copy->next=p;}}int main(){LinkList* L;L=(LinkList*)malloc(sizeof(LNode));//初始化L,L=00247c58,即L指向的头节点的地址为00247c58createListHead(L,3);int j=1;LNode* p=L;while(j<=3){p=p->next;++j;cout<<p->data<<endl;}int c=sizeof(int);if(sizeof(int*)==sizeof(char*)){cout<<"fuck";}system("pause");}
调用createListHead函数时,创建了一个副本_copy=L=00247c58,
而执行_copy=(LinkList*)malloc(sizeof(LNode));之后_copy为另一个地址00246c89,指向另一个头节点,并且对该地址进行操作,最好退出函数时,_copy销毁,而L指向的头结点没有进行任何操作,所有若注释掉上面一句,则_copy和L的值都为00247c58,所以是对同一块内存操作,对其解引用都会直接作用在main函数里申请的内存区域!
0 0
- 关于函数传引用和传指针的见解,以线性表为例子
- 关于函数返回值为引用和指针的问题
- 以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数
- 关于指针的见解
- 指针、引用为函数参数传值
- 指针函数和函数指针--我的一点见解
- 关于返回一个引用类型的函数的用法和见解
- 关于 函数指针和函数名 例子的疑难解答
- 函数的参数为引用和指针的区别
- 关于一级指针和二级指针的简单见解
- 关于C中函数参数,指针-常量-引用解释的4个函数例子
- 关于指针的个人见解
- 函数指针传参和引用传参的区别
- 函数传参指针和引用的差别
- 指针和引用的小例子
- “定义为指针,外部以数组形式引用”和“定义为数组,外部以指针形式引用”会发生什么?
- 引用与指针的一点见解
- 二级指针和指针引用函数传参(C++)
- imei verify C code
- svn提交时设置文件类型过滤
- Java 数据结构之BlockingDeque
- eclipse_win7_hadoop1.2.1开发环境搭建2
- Android中解析XML
- 关于函数传引用和传指针的见解,以线性表为例子
- 事实表 维度表 概念
- 投资管理系统
- linux驱动开发——模块基础知识
- CentOS系统找回Mysql登陆密码
- 输出两个随机对称矩阵而且使两个矩阵相加并输出
- Android应用开发提高篇(4)-----Socket编程(多线程、双向通信)
- C++11新特性:自动类型推断和类型获取
- JAVA程序执行顺序,你了解了吗?