C++ 如何将指针重置到特定数组位置?
我是一名全新的编程专业学生,请原谅我的无知。我的任务规定: 编写一个声明10个整数数组的程序。编写一个接受键盘10个值的循环,并编写另一个显示10个值的循环。不要在两个循环中使用任何下标;只使用指针 这是我的密码: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 =
#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;x cout您可以完全按照第一次分配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;x Couth:这听起来更像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秘密》——这本书有整整一章是关于这一点的。