4 語義 陷阱

2022-05-05 05:24:11 字數 514 閱讀 2946

1. 假定對於下標越界的陣列元素取其位址也是非法的,那麼對於本書3.6(該標題下為4.6)節中的bufwrite程式應該如何書寫?

void bufwrite(char *p, int n)

rem = n - (bufptr - buffer) - 1;

k = n > rem ? rem : n;

memcpy(bufptr, p, k);

p += k;

n -= k;

bufptr += k;

}}

3.編寫乙個函式,對乙個已排序的整數表執行二分查詢。函式的輸入包含乙個指向標頭的指標,表中的元素個數,以及待查詢的數值,函式的輸入是乙個指向滿足查詢要求的元素的指標,當未查找到滿足要求的數值時,輸出乙個null指標

int* search(int *p, int n, int x)

if(p[l] == x) return p;

else return nullptr;

}

第三章 語義陷阱

3.1指標和陣列 1 c語言中只有一維陣列,且陣列大小必須在編譯期確定 2 對於陣列,我們只能確定該陣列的大小,以及獲得指向該陣列下標為0的元素的指標 3 陣列名a除了作為運算子sizeof的引數這一情形外,在其他情況下都是陣列a中下標為0的元素的指標。sizeof a 為整個陣列a的大小 3.5空...

C語言缺陷與陷阱語義分析

語義分析 程式設計師本意是希望表示某種事物,而實際表示的卻是另外一種事物 1.指標和陣列 陣列值必須注意的兩點 1 c語言只有一維陣列,且陣列大小必須在編譯期作為乙個常數確定下來 2 對乙個陣列只能進行 確定該陣列的大小,以及獲得指向該陣列下標為0的元素的指標。只有在兩個指標指向同乙個陣列中的元素時...

C陷阱與缺陷第三章 語義「陷阱」

1.指標陣列 注意 c語言中只有一維陣列,而且陣列的大小必須在編譯期就作為乙個常數確定下來。c語言中陣列的元素可以是任何型別的物件,也可以是另外乙個陣列,這樣,就可以 出乙個多維陣列。對於乙個陣列,只能夠做兩件事 確定陣列的大小,以及獲得指向該陣列下標為0的元素的指標。有關對陣列的操作,實際上都是通...