我是一名全新的编程学生,所以请原谅我的无知.我的任务说明:
编写一个声明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;
}
Run Code Online (Sandbox Code Playgroud)
我想我知道我的问题在哪里.在我的第一个循环之后,我的指针处于值[10],但是我需要将它返回到值[0]以显示它们.我怎样才能做到这一点?
您可以完全按照分配时的方式执行以下操作p:
p = &values[0];
Run Code Online (Sandbox Code Playgroud)
此外,数组非常像指针(你不能改变)到静态分配的内存.因此,表达式的&values[0]评估与刚才的相同values.所以,
p = &values[0];
Run Code Online (Sandbox Code Playgroud)
是相同的
p = values;
Run Code Online (Sandbox Code Playgroud)