C语言——通过调用函数改变形参指针 改变实参指针问题

来源:互联网 发布:数据库审计产品资料 编辑:程序博客网 时间:2024/06/06 01:12

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);
}
0 0
原创粉丝点击