2013-07-05 69 views
0

我目前正在練習3.35在C++入門第五版!我使用while循環完成了這個練習。但是,當我來到使用for循環來試試這個練習,我解決不了改變一個數組元素值的問題。 (我確實解決了問題,但沒有使用指針)。
我需要的是是,如果你能幫我解決這個練習改變數組的值使用指針for循環。變化值

練習它自
使用指針,寫一個程序來在一個陣列中的元素設置爲0(零);

我的代碼使用指針

int main() 
{  
    int arr[] = {1,2,4,6,8,10,12,14,16,18}; 
    int *pbeg = begin(arr); 
    int *pend = end(arr); 

    while (pbeg != pend) 
    { 
     pbeg[0]=0; 
     ++pbeg; 
    } 
    for (auto ii : arr) 
    { 
     cout<<ii<<" "; 
    } 
    keep_window_open("~"); 
    return 0; 
} 

for循環代碼我已經做了

int main() 
{  
    const size_t ar =10; 
    int arr[ar] = {1,2,4,6,8,10,12,14,16,18}; 

    for (size_t i = 0; i < ar; ++i) 
    { 
     arr[i]=0; 
    } 
    for (auto ii : arr) 
    { 
     cout<<ii<<" "; 
    } 
    keep_window_open("~"); 
    return 0; 
} 

在這種for循環我沒有使用任何指針。

+1

數組是指針... –

+0

@ColeJohnson:不,他們不是。他們的表現非常像指針,但他們不是指針。 –

+2

@ColeJohnson數組不是指針,但很容易衰減成指針。 – Borgleader

回答

2

試試這個:

for(int i = 0; i < size; i++) { 
    *(pbeg+i) = 0; 
} 

pbeg是你的內存地址,所以你加我繼續前進,許多元素。

+0

優秀。練習解決:)謝謝 – AlexGreat

+0

它不應該是'*(pbeg +我的sizeof *(INT))'考慮到它是一個'int'陣列?或者,編譯器是否爲你做這件事? –

+0

對於其他數據類型,這是正確的。不過,「int」只是起作用,因爲它的大小與前進的數量一致。 –