2011-12-24 97 views
2

在我粘貼下面的程序中,我只是想知道爲什麼指針「p」在for循環中被初始化了?我習慣於讀取for循環的條件爲:從變量的這個值開始;直到它達到這個值;增加這一點。所以看起來奇怪的是,有另一個變量不能確定結束條件,並且在每次迭代過程中都沒有增加。爲什麼在for循環中初始化這個無關緊要的變量?

我只是把p = & a [0];在for循環之上並留下其餘部分。這僅僅是一種文體的東西,還是在處理事物的方式上有差異,取決於你初始化p的位置?一種方式比另一種更受歡迎嗎?

#include <stdio.h> 
#define PRD(a) printf("%d", (a)) 

int a[]={0, 1, 2, 3, 4}; 

int main() 
{ 
    int i; 
    int* p; 

    for (p=&a[0], i=0; i<=4; i++) PRD(p[i]); 

    return 0; 
} 
+4

因爲誰決定把它放在那裏? :P – Benjamin 2011-12-24 03:02:42

+0

易於測試。將p =&a [0]移到循環外部,查看輸出是否更改... – 2011-12-24 03:03:13

+0

是的,我可以看到輸出是相同的。我只是想知道是否有一個我沒有意識到的好處 - 如果有任何區別的話。 – bqui56 2011-12-24 03:05:31

回答

2

這似乎只是一種風格的東西。我可能還會在for聲明之外進行p的初始化,因爲填充所有內容會使代碼難以閱讀。 (因爲for循環的模式與你通常所期待的不同,有經驗的程序員必須停下來,備份並思考它的內容,然後纔有意義。我最初認爲for中有四個子句控制語句,直到我注意到第一個分隔符是逗號。)

這樣寫代碼(而不是在循環外部初始化p)將不會影響性能。

+0

編寫代碼更容易讓人閱讀,這總是更好。計算機不會在乎任何方式。 – dreamlax 2011-12-24 03:07:27

相關問題