打卡23 void 指標 強制指標轉化

2021-06-25 11:22:13 字數 1500 閱讀 7635

指標就是指向位址的。

指標與自己的位址無關,代表的就是指標的位址。

取指向位址的值

用於位址管理。不是值管理的方式。

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一...