C與指標 使用指標無法修改主函式的值

2021-08-30 14:05:15 字數 916 閱讀 6694

#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型元素的陣列 ...