Byte的C ++存储复制字节?

时间:2013-07-31 21:47:17

标签: c++ storage

我正在从Thinking in C ++一书中学习C ++。我不明白有一段代码。它是包含字符或整数数组的结构的成员函数。 add函数应该添加每个元素:char或int。

int Stach::add(const void* element){
int startBytes=next*size; //according to the book, next is the next space available and the size is the size of the space
unsigned char* e=(unsigned char*)element;
for(int i=0; i<size;i++)
storage[startBytes+i]=e[i];
next++;
return(next-1);// return index
}

我不明白的部分是什么是空间,空间的大小是多少?这本书没有解释它是什么。另外,我对

感到困惑
unsigned char* e=(unsigned char*)element;
for(int i=0; i<size;i++)
storage[startBytes+i]=e[i];

我对该函数的理解是它复制,比如一个int,它一个字节地占用4个字节?我理解正确吗?我该如何解释

unsigned char* e=(unsigned char*)element;

非常感谢。

1 个答案:

答案 0 :(得分:0)

C ++将所有程序存储器建模为字节数组(字符,无符号字符)。我们在法律上允许通过将指向该对象的指针转换为(通常unsignedchar*来逐字节地检查任何对象的表示。

这段代码正在做的是使用字节数组作为一种独立于类型的存储空间。当您调用add时,它会将要添加的对象的字节表示复制到其内部字节数组storage中。这就是人们如何在C中实现与类型无关的容器,但在C ++中完全不适合,即使是在2000年。