Мне нужно понять, как манипулировать данными в разных позициях индекса в динамически выделенном массиве символов в C++. Я делаю quack (queue/stack). Меня интересует переменная «элементы».Как ссылаться на динамически выделенный массив символов в C++
Вот определение класса Quack:
class Quack
{
public:
static const char YOUR_NAME[]; // used for printing out programmer's name
static const bool PREMIUM_VERSION; // used to designate Regular vs. Premium
Quack(int capacity, int growBy = 0);
// capacity: # of slots in array
// growBy: # of slots to add to array when it grows, 0 means "don't grow"
~Quack(void);
bool pushFront(const char ch); // push an item onto the front
bool pushBack(const char ch); // push an item onto the back
bool popFront(char& ch); // pop an item off the front
bool popBack(char& ch); // pop an item off the back
void rotate(int r); // "rotate" the stored items (see note below)
void reverse(void); // reverse the order of the stored items
int itemCount(void); // return the current number of stored items
void printArray(std::ostream& out) // print contents of array
{
unsigned int ch;
out << "[ ";
for (int i = 0; i < capacity; i++) {
ch = static_cast<unsigned char>(items[i]); // avoid sign extension
if (ch == '-') // print in hex, because using '-' for 0xCD
goto printHex;
else if (ch >= '!' && ch <= '}') // ASCII text character
out << static_cast<char>(ch) << ' ';
else if (ch == 0xCD) // print 0xCD as '-'
out << "- ";
else // print everything else as hex
goto printHex;
continue;
printHex:
out << std::setw(2) << std::setfill('0') << std::hex << ch << ' ';
}
out << ']' << std::endl;
}
private:
char *items;
int nItems;
int capacity;
int growBy;
int *front;
int *back;
public:
friend std::ostream& operator<<(std::ostream& out, Quack *q);
};
Теперь, вот конструктор Кряк:
Quack::Quack(int capacity, int growBy) :
capacity(capacity),
growBy(growBy),
nItems(0),
items(new char[capacity]),
front(NULL),
back(NULL)
{
}
Я понимаю, что каждый экземпляр Quack имеет переменную обугленного «элементы», который является указатель на новый массив символов. Я не понимаю, как ссылаться на элементы в массиве. Например, если я хочу ссылаться на позицию индекса 0 нового массива символов, могу ли я указать элементы (0) или элементы [0], или это что-то совсем другое?
Спасибо
пунктов [0]. items (new char [capacity]) является просто синтаксисом для создания массива, например nItems (0) делает nItems = 0 – user3125280
'goto printHex;' Arrggh! Пожалуйста, сделайте это вместо: 'if (ch == '-') PrintHex (out, ch);' – PaulMcKenzie