1. 程式人生 > >C語言——通過呼叫函式改變形參指標 改變實參指標問題

C語言——通過呼叫函式改變形參指標 改變實參指標問題

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);
}