1,按值传递,在调用函数的时候,将指向数据的指针实参传递到调用函数的形参中去
2,单向传递,形参中的指针子函数改变地址后不能传给主调函数,变量同样指向了我们希望处理的数据,然后对形参的指针变量指向的数据进行各种希望的处理,在调用函数运行完成后,各个形参指针变量进行了释放。子函数改变地址后不能传给主调函数。
注:红字为摘抄部分下面是测试代码.c:
#include<stdio.h>
#include<stdlib.h>typedef int Datatype;
typedef struct BiNode
{
Datatype data;
struct BiNode *lchild,*rchild;
}BiNode;
BiNode *a(BiNode *root)
{
BiNode *s;
s=(BiNode *)malloc(sizeof(BiNode));
root=s;
root->data=222;
printf("函数中:\n&root=%p\nroot->data=%d\n",root,root->data);
return root;
}
void main()
{
BiNode *root;
root=(BiNode *)malloc(sizeof(BiNode));
root->data=111;
printf("&root=%p\nroot->data=%d\n",root,root->data);
root=a(root);//通过返回值的形式
printf("函数处理后:\n&root=%p\nroot->data=%d\n",root,root->data);
}