#include
#include
#define ok 1
#define error 0
typedef
struct lnode
lnode,
* linkedlist;
intinitlist_l
(linkedlist l)
printf
("init data %d \n"
, l->data)
;return func_state;
}int
main
(void
)
程式的執行結果如下圖:
可以看到在main函式中的在呼叫initlist_l後被更改,這當中的原因何在?
l是乙個指向struct lnode 的指標(linkedlist是使用typedef定義的指向結構體的指標的別名, 相當於 lnode * )
問題出在**呢?
我們知道使用指標可以在子函式中修改主函式中的值,
操作的是指標所指向的物件的值
而上面的操作的是指標本身,指標本身不能交換。我們再看看下面的這個例子:
#include
intswap
(int
* a,
int* b)
intmain
(void
)
可以看到這裡swap交換了a,b的值,但是沒有交換a,b的位址,這當然了
這說明指標指向的值是call by reference(按引用呼叫)引用值的就是指向,而就指標自身而言,指標也是call by value(按值呼叫)
指標去修改主函式的值
經典指標程式,互換兩個數字 一 includevoid huhuan int int 互換函式 void huhuan int a int b int main 不能成功互換 經典指標程式,互換兩個數字 二 includevoid huhuan int int 互換函式 void huhuan in...
C 函式指標與指標函式
函式指標 函式名本身代表著函式的位址,因此給函數指標賦值使可以不用加 符號 加也可以!void func int 定義乙個函式 void pf int 定義乙個函式指標 pf func 給函式指標賦值 int f x,y 其中x,y是形式引數,f是函式名,呼叫後返回乙個指向整型資料的位址指標。f x...
C 函式指標與指標函式
c 要是不常用,相信過四天你的指標函式與函式指標的概念就該忘個精光。其實只要記住誰在後面誰就是哪個本質。先了解下指標陣列與陣列指標吧 陣列指標 就是指向陣列的指標,它表示的是乙個指標,它指向的是乙個陣列,它的重點是指標,如,int pa 8 宣告了乙個指標,該指標指向了乙個有8個int型元素的陣列 ...