【发布时间】:2016-02-22 03:58:09
【问题描述】:
对于一个作业,我采用了一个带有名字和姓氏(字符串)的类并颠倒了顺序,一种使用数组表示法[]的方法,它接受一个 char 变量[],并且另一种做同样事情的方法,但不使用任何括号符号 ie[] 并接受 char *variable。我不知道有任何其他方法可以在不使用 [] 且仅使用指针方法的情况下引用列表中的某个字符。我将如何开始指针方法,我已经完成了数组方法?下面提供的 main.cpp 用于上下文。
我知道数组本质上是一块内存,它是数据类型大小乘以您指定的容器数量。有没有办法使用为数组分配的内存中的位位置来遍历数组?
#include <iostream>
#include <string>
using namespace std;
class Name
{
public:
string TheName;
Name() { TheName=""; }
Name(string name) { TheName=name; }
string ReverseUsingString();
void ReverseUsingArray(char Reversed[]);
void ReverseUsingPtrs(char *Reversed);
void operator =(char *name) {TheName=name;}
};
#include "NameClassImplementation.cpp" // You supply this file!
int main()
{
Name Names[5]; Names[0] = "Ben Dover";
Names[1] = "Chuck Roast"; Names[2] = "Jim Naysium";
Names[3] = "Ella Quint"; Names[4] = "Justin Case";
char reversedname1[100], reversedname2[100];
for (int i=0; i<5; ++i)
{
Names[i].ReverseUsingArray(reversedname1);
Names[i].ReverseUsingPtrs(reversedname2);
cout << "Original Name : " << Names[i].TheName << endl;
cout << " reversed with arrays: -->" << reversedname1 << "<--\n";
cout << " reversed with ptrs : -->" << reversedname2 << "<--\n";
cout << " reversed with string: -->"
<< Names[i].ReverseUsingString() << "<--\n\n";
}
system("pause"); return 0;
}
【问题讨论】:
-
ReverseUsingArray和ReverseUsingPtrs具有相同的参数列表。如果将数组声明符放在参数列表中,它会调整成为指针。 -
对,但让我难过的是我的教授不希望我们在 ReverseUsingPtrs 的任何地方都使用括号,而只在 ReverseUsingArray 中使用括号,而且我不知道如何操作数组中的数据不使用任何括号的指针。
-
x[y]与*(x + (y))完全相同