因此我被要求编写一个程序,该程序使用指向数组中第一个元素的指针并将指针传递给函数。然后只使用指针变量(和循环结构),只打印精确倍数为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
我无法找出问题所在。任何帮助表示赞赏。感谢
答案 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;
}