Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将指针重置到特定数组位置?_C++_Pointers - Fatal编程技术网

C++ 如何将指针重置到特定数组位置?

C++ 如何将指针重置到特定数组位置?,c++,pointers,C++,Pointers,我是一名全新的编程专业学生,请原谅我的无知。我的任务规定: 编写一个声明10个整数数组的程序。编写一个接受键盘10个值的循环,并编写另一个显示10个值的循环。不要在两个循环中使用任何下标;只使用指针 这是我的密码: #include "stdafx.h" #include <iostream> using namespace std; int main() { const int NUM = 10; int values[NUM]; int *p =

我是一名全新的编程专业学生,请原谅我的无知。我的任务规定:

编写一个声明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;
}
#包括“stdafx.h”
#包括
使用名称空间std;
int main()
{
常数int NUM=10;
int值[NUM];
int*p=&值[0];
int x;
对于(x=0;x*p;
}  
对于(x=0;xcout您可以完全按照第一次分配
p
时所做的操作:

p = &values[0];
此外,数组非常类似于指向静态分配内存的指针(您无法更改)。因此,表达式
&values[0]
的计算结果与
values
的计算结果相同。因此

p = &values[0];

p = values;

你的作业有没有说你必须按顺序打印数字?如果没有,你可以通过反向打印来获得乐趣:

while (p != values)
{
    cout << *(--p) << " ";
}
while(p!=值)
{

cout如果作业中说您必须按顺序打印数字,则应修改如下:

for (x = 0; x < NUM; ++x, p++)
{
    cout << *(p-NUM) << "  ";
}
for(x=0;xCouth:这听起来更像C而不是C++:-)我发现很多学院都说他们教C++,但实际上用C代码> CIN < /代码>和<代码> cOUT <代码>。我高中也有过这样的事情:(@ohtanya:家庭作业?请加上标记。+1表示包含作业、显示您的作业并说明问题所在。另外,还表示包含
家庭作业
标记。@ohtanya:没问题。如果效果足够好,您可以单击答案评级下的复选标记以接受答案。:)与通常的看法相反,数组不是指针。在标准语言中,指针是可修改的l值,而数组不是。要演示这一点,请比较两个赋值:
p=values;
values=p;
。这就是奇怪的
&array[subscript]
语法来自。它在本例中起作用,因为数组名用作
r值
@Nikolai N Fetissov:int*const foo
int foo[3]之间唯一的实际区别
sizeof
产生的结果。还有其他吗?试着在头中声明
extern char*buffer;
,然后在
.c
文件中定义
char buffer[256];
。编译器会清楚地告诉您类型不同。我知道,这有点微妙。如果您感兴趣,请拿一份彼得·范·德·林登的《C编程专家:深层C秘密》——这本书有整整一章是关于这一点的。