指標就是指向位址的。
指標與自己的位址無關,代表的就是指標的位址。
取指向位址的值
用於位址管理。不是值管理的方式。
m_cbf注釋
client=10
&client=0x1234
(void *)是指向&client 位址的指標。
然後向m_cbf傳這個指標的位址
將指標p接收引數,指向那個位址。同時將那個位址轉成int型。即裡面的值是int型
fd取裡面存的int型的具體值
m_cbf1注釋:
指標就是指向位址的。指向的東西理解為位址
用乙個指標指向位址10
傳指向位址10的指標,本質就是傳指標指向的位址。
所以print args,結果為10.就是p指向的位址就是位址10
然後將位址10按整數訪問。
注意不能*p,等於去位址10裡面的內容了
m_cbf1(void *args)
m_cbf(void *args)
main () {
int client;
client=10;
m_cbf((void*)&client);
m_cbf1((void*)client);
result:
fd=10
fd1=10;args=10
例子2:
struct tms tms_buff;
//time_t is long
time_t t;
struct tm *ts;
long *p;
const time_t *q;
time(&t);
p=&t;
q=(const time_t *)&t;
printf("p=%u;q=%u\n",p,q);
printf("t=%ld;*p=%ld;*q=%ld\n",t,*p,*q);
ts=localtime(&t);
printf("%.2d\n",(ts->tn_year-100));
result:
p=4290769252;q=4290769252
t=1411359743;*p=1411359743;*q=1411359743
p和q是相同的
t,*p,*q值是相同的
q轉成指標,即用增加乙個指標,這個指標指向這個位址而已。
而不是獲取某個值得位址。
q=(const time_t *)t;
表示指向t 值的位址
pfun = (fun)*((int*)*(int*)(&b))
&b位址
(int*)(&b)指向的位址內容是整數
*(int*)(&b)取值
((int*)*(int*)(&b)) 將取得值,當成位址,在這個位址中的值是整數
*((int*)*(int*)(&b))取這個整數
陣列名不是指標
只是可以當作指標常量來看待
如果作為引數傳入函式則會退化成指標
2020 12 10 劍指offer打卡
題目描述 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列 現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。解題思路 1.雜湊表 統計每個數出現的次數 時間複雜度o n 空間複雜度o n 2.排序法 先將陣列排序,可能的眾數肯定...
ARTS打卡23 Python自帶迷你資料庫
algorithm做演算法題,review點評英文文章,tip總結技術技巧,share做技術分享。每週打卡一次,這就是arts打卡。leetcode 劍指 offer 59 ii.佇列的最大值 題目描述 請定義乙個佇列並實現函式max value得到佇列裡的最大值,要求函式max value pus...
劍指offer 面試23題
面試23題 題目 如果乙個鍊錶中包含環,如何找出環的入口節點?解題分析 其實此題可以分解為三個題目 1 如何判斷乙個鍊錶中是否包含環?2 如何找到環的入口節點?3 如何得到環中節點的數目?解決此題 可以設定兩個指標,一快一慢。1.兩個指標乙個fast 乙個slow同時從乙個鍊錶的頭部出發 fast一...