一級指標做為函式引數

2021-08-11 08:40:14 字數 797 閱讀 4945

#include

#include

#include

void fun1(int *n)

void fun2(char *str)

char *fun3()

int main()

執行結果如下

我們發現以下幾點

1.呼叫函式fun1後num值確實改變了

2.呼叫函式fun2後str值並沒有改變

3.呼叫函式fun3後str值改變了

關於第一點無需多說,指標做函式引數確實可以間接改變實參的值,但奇怪的是執行fun2後並沒有將fun2中變數 p的位址返回給實參str,這是因為不管是傳值還是傳位址實際上都是傳值,形參只是實參的乙個副本,當傳參完成後形參與實參就沒有了關係,所以無論在被調函式中對形參如何操作,都不會影響實參,所以掉用函式fun2不會使str值變化。而不同的是函式fun3是直接將位址做為返回值返回,所以函式fun3改變了str的值。

void fun(char **str)

int main()

結果如下

函式fun使str的值發生了改變,與函式fun2不同的是fun傳遞的是str的位址是乙個二級指標,所改變的是&str中的值,相當於改變了指標指向

一級指標還是二級指標作函式引數(2)

程式1 void main void mymalloc char s 我想在函式中分配記憶體,再返回 mymalloc p 的執行過程 分配乙個臨時變數char s,s的值等於p,也就是null,但是s占用的是與p不同的記憶體空間。此後函式的執行與p一點關係都沒有了!只是用p的值來初始化s。然後s ...

C (一級指標 二級指標,指標引用)作為函式引數

指標作為函式引數,傳進去的只是乙個拷貝的指標,所以無法通過傳進去的引數在函式內修改函式外面作為引數的該變數。傳變數,傳的是變數的拷貝,在函式裡面修改該引數,改變的只是函式裡面的區域性變數。傳一級指標,傳的是乙個指標的拷貝,在函式修改該指標所儲存的位址 修改指標的指向 修改的也只是區域性變數。但是可以...

一級指標 二級指標做函式引數的深入剖析

在講述內容之前,先講四點重要知識 1.當傳入引數時,函式形參會立即申請形參的記憶體空間,函式執行完畢後,形參的記憶體空間立即釋放掉。1.指標是存放其他變數位址的變數。指標有自己的記憶體空間,記憶體空間存放的是其他變數的位址。2.指標具體指向誰,要看指標記憶體空間存放的位址。存放誰的位址就指向誰。3....