2012-04-23 97 views
1

我想在循環完成執行後訪問第一個數組元素。如何在循環中執行後訪問數組的第一個元素?

我有一個數組存儲一些數字,如1,2,3,4,5。該數組始終使用索引0初始化,但我沒有使用第0個索引來存儲任何內容。

所以我想利用在環時尚指標像1-2-3-4-5-1我能做到這一點,如果我使用數組從第0個指標像0-1-2-3-4 -0與模數運算。

當我的數組索引從1開始時,該怎麼做呢?

+3

你爲什麼不使用第0個元素?這將導致大量的鬥爭和額外的努力以及巨大的bug效力。如果基於0的索引是你不習慣的東西,那麼C++不適合你。如果你只是覺得你不習慣,那麼相信我,你會的。 – 2012-04-23 15:55:35

+0

這是C還是C++? – 2012-04-23 15:56:25

+0

@ phresnel:好吧,原因是數組存儲節點號。節點從具有數組索引編號的1-N開始。節點不過是處理器。每次使用時我都不想'-1'。這也很難閱讀。這是C – SachinGutte 2012-04-23 16:00:24

回答

3

您可以減去一個,做%,並添加一回:

a[((i-1)%ARRAY_LEN)+1] 

這說明戰鬥公約的問題:不是一個簡單的%操作,你需要一個減法,一個%和加成。除了與C/C++約定作鬥爭之外,最好還是採用它來提高其他人的效率和可讀性。

3

嗯......你可以用邏輯來代替模當你增加索引:

if (++index >= 6) 
    index = 1; 
+1

在嵌入式領域,與'%'解決方案相比,它具有強大的優勢,不需要劃分。 – ouah 2012-04-23 16:42:04