我是一名全新的编程学生,所以请原谅我的无知。我的任务说明:
编写一个声明10个整数数组的程序。编写一个循环,从键盘接受10个值,并编写另一个显示10个值的循环。不要在两个循环中使用任何下标;仅使用指针。
这是我的代码:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
const int NUM = 10;
int values[NUM];
int *p = &values[0];
int x;
for(x = 0; x < NUM; ++x, ++p)
{
cout << "Enter a value: ";
cin >> *p;
}
for(x = 0; x < NUM; ++x, ++p)
{
cout << *p << " ";
}
return 0;
}
我想我知道我的问题在哪里。在我的第一个循环之后,我的指针处于值[10],但是我需要将它返回到值[0]以显示它们。我怎么能这样做?
答案 0 :(得分:8)
您可以完全按照分配p
时的方式执行操作:
p = &values[0];
此外,数组非常像指针(无法更改)到静态分配的内存。因此,表达式&values[0]
的计算结果仅与values
相同。因此,
p = &values[0];
与
相同p = values;
答案 1 :(得分:1)
你的作业是否说你必须按顺序打印数字?如果没有,你可以通过反向打印来获得一些乐趣:
while (p != values)
{
cout << *(--p) << " ";
}
(只需使用此代码进行学习。)
答案 2 :(得分:0)
如果作业要求您必须按顺序打印数字,则应按以下说明进行修改:
for (x = 0; x < NUM; ++x, p++)
{
cout << *(p-NUM) << " ";
}