c指針筆記

2017-10-26

1.int  *a:指的是定義一個指向int類型數據的指針a,即:這是一個名叫a的指針,這個指針指向的是int類型。

2.scanf("%d",&n);&取地址符,這既是函數要求,也是c語言的原理:通過傳遞變量地址,而達到在子函數中修改變量內容的目的。

 3 定義函數:int createSqlist(Sqlist *L,int maxSize);

   調用:createSqlist(&L,maxSize);

   & b ,b本身是一個實體可能是個數字或者結構[理解這點很重要],但是傳參的時候要傳地址,所以用取地址符&;

 int createSqlist(Sqlist *L,int maxSize); L是一個實體,此句中的L跟原來的L沒有什麼關係(只是名字一樣,好知道它的來源)

 解釋:【重點理解】

就是說,L只是一個名稱,在新定義的函數裏面使用。
其實不是第一次出現,只是你把函數頭放在了最前面,所以看起來好像是第一次出現。
當程序調用createSqlist函數時,會給它傳入一個指針,這個傳入的指針纔是我們要操作的東西
什麼時候使用?
這個傳指針,是相對於傳值來說的。一般的函數沒有辦法對傳入的參數進行真正的修改。他只是利用傳入的參數做一些事。比如說,給cmp函數兩個參數a,b讓他返回一個真或假從而判斷大小。這個應該很好理解吧,,if(cmp(a,b))。。。。
但是如果我們有這樣的需求,要一個函數,我給他a和b,讓它給a,b排序,怎麼辦,普通的函數在其內部排好序後,到了main函數裏又變回來了,達不到我們的要求,所以指針就派上用場了。

最後再說一句,int a=10;printf(“%p”,&a);這一句是打印a的地址
&a是取出a的地址(就是a在那裏放着,他的房間號是多少,上面顯示的那個很亂的數就是他的房間號)


發佈了25 篇原創文章 · 獲贊 0 · 訪問量 4747
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章