以下**列印的結果是(假設執行在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結束 輸入資料保證合法 輸出對於輸入資料的每一行輸出兩個分數的運算結果。注意結果應符合書寫習慣,沒有多餘的符號 分子 分母...