C語言——通過呼叫函式改變形參指標 改變實參指標問題
阿新 • • 發佈:2019-01-26
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);
}