/*手機通訊錄(順序表)*/
#include
#include
#include
#include
#include
#include
#define maxsize 50
typedef
struct
elemtype;
typedef
struct
sqlist;
void
initlist
(sqlist *
&l)//初始化列表其中*&l為引用型指標
void
displist
(sqlist* l)
//資料顯示
printf
("目前聯絡人總數:%d\n"
, l-
>length)
;printf
("\n");
}bool
listlnsert
(sqlist*
& l,
int i, elemtype e)
//插入資料
bool
listdelete
(sqlist*
& l,
int i, elemtype& e)
//其中*&l為飲用型指標。定義這個函式為bool型,返回結果只有對和錯
l->length--
;//表長度的更改
printf
("length=%d\n\n"
, l-
>length)
;return
true;}
void
menu1()
intlocateelem
(sqlist* l, elemtype e)
//查詢資料
}/*void destroylist(sqlist *l)
*/int
main()
; elemtype e;
menu1()
;printf
("(1)初始化順序表l\n");
initlist
(l);
printf
("(2)依次插入元素\n");
for(
int i =
0; i <
4; i++
)listlnsert
(l, i +
1, s[i]);
displist
(l);
while
(flag ==1)
}return0;
}
思考這個形參為什麼要寫成這兩種形式,即sqlist *l和sqlist * &l的區別。*l是指標,全稱是指標變數,是乙個用來儲存記憶體位址的變數。在這裡是乙個指向順序表,儲存順序表的位址的變數。
* &l是指標型別的引用,引用(reference)是c++對c語言的重要擴充。引用就是原變數的另外乙個名稱(別名),引用變數本身沒有自己的實際儲存空間,對引用變數的操作,就是在操作原變數。這裡的* &l代表原指標。
這兩個有著乙個共同點,都指向順序表 l ,如果在函式中修改l 的內容,都影響到 l 的內容。
不同點則是,在函式中修改指標本身所指向的位址,*l 不會發生改變,而* &l會發生改變。
若要改變形參中的內容並且使用它則需要用引用,如果不需要改變子函式體中形參旳值,則不需要用引用。
首先,* &l是引用型別的指標,代表的是原指標,我們在函式中對指標的操作,都是直接對原指標的操作,無論是指標的內容,還是指標指向的位址,都會發生改變。
那麼,*l為什麼在函式中會改變不了所指向的位址呢?
其實,這裡我們要延伸到函式形式引數和實際引數的很基礎,也很重要的知識點了。
形參出現在函式定義中,在整個函式體內都可以使用。實參出現在主調函式中,進入被調函式後,實參也不能使用。在函式呼叫的時候,主函式把實參的值傳送給被調函式的形參,從而實現資料的傳送。
但是,在這個函式呼叫的過程中,資料傳送是單向的,即資料只能由實參傳到形參,而形參不會傳回實參。也就是說,我們在函式中改變形參的值,實參的值是不會發生改變的,這就是函式呼叫中的單向值傳遞。
那麼,回到我們的 *l 來,*l其實就是乙個變數,在這裡是乙個形式引數。形式引數在函式中其實是對實參的拷貝,也就是說,函式中形參其實是另乙個變數,乙個複製原變數的新變數,有不同於原變數的記憶體空間,存在於函式中,函式呼叫結束,即刻釋放記憶體空間。
也就是說,我們在函式中改變 *l 所指向的位址,不是在對原變數進行改變,而是對原變數的乙個複製體進行改變,改變了複製體,卻沒有改變本體。
所以,在函式中 *l 不能改變所指向的位址。
獲取手機通訊錄
在公司裡寫了一段上傳使用者通訊錄的 寫下來,以便以後查閱 獲取手機裡的通訊錄 獲取通訊錄 param context return 返回包含使用者名稱,與號碼的arraylist public arraylistgetcontact context context phones.close alla...
獲取手機通訊錄
手機聯絡人,通過乙個服務想歪提供資料 所有手機聯絡人的資料我們會在服務裡面查詢,然後再返回給activity 首先,我們建立出 contentresolver contentresolver 的建立時通過上下文來獲取的 contentresolver cr context.getcontentres...
獲取手機通訊錄 1 1(取出通訊錄資料)
獲取手機通訊錄在開發中經常會用到,這邊記下日後檢視。1 獲取手機通訊錄是要取得系統許可權的將下面許可權新增到androidmanifest檔案中 我經常在許可權問題上吃虧,經常 寫好了,也沒有錯,就是出不來效果,所以以後需求中用到許可權的,先在配置檔案中把許可權新增進去 2 聯絡歷史的bean ca...