无法使用指针访问数组中的某些值

时间:2015-08-21 08:41:29

标签: c++ arrays pointers

因此我被要求编写一个程序,该程序使用指向数组中第一个元素的指针并将指针传递给函数。然后只使用指针变量(和循环结构),只打印精确倍数为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);

}

这个输出是:

7

49

-149462114

我无法找出问题所在。任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:3)

nums是指向数组开头的指针。您在每次循环迭代时将其重新分配为nums + i,而不是nums + 1。因此,在第四次迭代中,例如,nums指向初始数组start + 0 + 1 + 2 + 3,这是5个元素数组中的第七个元素。这就是为什么你会得到垃圾。

使用下标让您的生活轻松:

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