通常來(lái)說(shuō)獲取數(shù)組的長(zhǎng)度時(shí)不要對(duì)指針應(yīng)用sizeof操作符。
現(xiàn)來(lái)看看下面這段代碼:
void clear(int array[]) { for(size_t i = 0; i < sizeof(array) / sizeof(array[0]); i++) { array[i] = 0; }}void dowork(void) { int dis[12]; clear(dis); /*...*/}clear()使用sizeof(array) / sizeof(array[0])這種用法確定這個(gè)數(shù)組的元素?cái)?shù)量,但由于array是一個(gè)形參,因此它是指針類(lèi)型,sizeof(array) = sizeof(int *) = 4 (32位OS)
當(dāng)sizeof操作符應(yīng)用于聲明為數(shù)組或函數(shù)類(lèi)型的形參時(shí),它會(huì)產(chǎn)生經(jīng)過(guò)調(diào)整的(指針)類(lèi)型的長(zhǎng)度
對(duì)此問(wèn)題的解決方案如下:
void clear(int array[], size_t len) { for(size_t i = 0; i < len; i++) { array[i] = 0; }}void dowork(void) { int dis[12]; clear(dis, sizeof(dis) / sizeof(dis[0])); /*...*/}新聞熱點(diǎn)
疑難解答
圖片精選