2015-08-21 53 views
-1

所以我被要求編寫一個程序,該程序使用指向數組中第一個元素的指針並將指針傳遞給函數。然後僅使用指針變量(和循環結構),只打印數組值是7。這裏精確倍數該腳本:無法使用指針訪問數組中的某些值

#include <iostream> 
using namespace std; 

void print_sevens(int *nums,int length){ 

    for(int i = 0; i < length; i++){ 

    nums = nums + i; 

     if(*nums % 7 == 0) 
     cout << *nums << endl; 

    } 

} 


int main() { 

    int a[5]={7,49,2,8,70}; 
    int *p1 = &a[0]; 
    print_sevens(p1,5); 

} 

從這個輸出是:

-149462114

我找不出什麼是錯的。任何幫助表示讚賞。謝謝

+2

爲什麼所有的downvotes? –

回答

3

nums是指向數組的開始的指針。您將在每次循環迭代時將其重新分配爲nums + i,而不是nums + 1。因此,例如,在第四次迭代中,nums指向初始數組start + 0 + 1 + 2 + 3,這是您的5個元素數組中的第7個元素。這就是爲什麼你會得到垃圾。

使用下標,讓您的生活更輕鬆:

for(int i = 0; i < length; i++){ 
    if(nums[i] % 7 == 0) 
     cout << nums[i] << endl; 
}