2013-07-05 42 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”只是起作用,因为它的大小与前进的数量一致。 –