指標加減法,

2021-08-07 04:50:48 字數 529 閱讀 3899

以下**列印的結果是(假設執行在i386系列計算機上)(   120  )

struct st_t

int status;

short *pdata;

char errstr[32];

struct st_t st[16];

char *p = (char *)(st[2].errstr + 32);

printf("%d",(p - (char *)(st)));

分析:先說結構體,大小為 4+4+32 = 40,然後後面定義了乙個長度為16的陣列,裡面存放了16個結構體,然後分析*p,  st[2]呢就是這個陣列裡面的下標為二的結構體,然後後面點errstr就是定位到下標為二的那個結構體中的errstr的開頭,然後剛好後面又加了個32,剛好走完下表為2的這個結構體,然後最後的話,就是指標減法,然後是指標p減去陣列的強轉,(char *)(st)就是定位到st這個陣列的開頭,最後就是40*3/1 = 120.

!!!!重點是  指標加法需要調整,調整權重為:指標本身去掉乙個*求sizeof,也就是位元組數

時間加減法

include stdafx.h include windows.h typedef struct tagmydate mydate 用於表示兩個時間之間的差值,負值表示慢,正值表示快 typedef struct tagtimedistance timedistance int month day...

時間加減法

1.相關資料結構 首先看time.h檔案中隊time t的定義 可以看出time t實際上是乙個整數,它記錄了儲存的是從1970年1月1日0時0分0 秒到現在經過的秒數。這裡有一點要注意,對time t資料型別的值來說,它所表示的時間不能晚於2038年1月18日19時14分07秒,否則會發生溢位。為...

分數加減法

描述 編寫乙個c程式,實現兩個分數的加減法 輸入輸入包含多行資料 每行資料是乙個字串,格式是 a boc d 其中a,b,c,d是乙個0 9的整數。o是運算子 或者 資料以eof結束 輸入資料保證合法 輸出對於輸入資料的每一行輸出兩個分數的運算結果。注意結果應符合書寫習慣,沒有多餘的符號 分子 分母...