sizeof()에 문제가 있습니다. 내가 전에 만든 클래스에 포인터가 있습니다. 그리고이 포인터는아무 것도 참조하지 않는 포인터의 크기
static Book* books;
으로 초기화되므로 아무 것도 가리 키지 않습니다. 포인터가 어떤 배열을 가리키고 있는지 확인하고 싶습니다. 첫 번째 질문은 배열을 가리 키기 위해 런타임 중에이 포인터의 주소를 변경할 수 있기 때문에 수행 할 솔루션이 무엇인가하는 것입니다. 내가 sizeof (포인터)를 사용하려고하지만 그것은 충분히 도움이되지 않습니다. 반환 값은 4입니다. 어떤 식 으로든 말하면 나는 이렇게 평가할 수 있습니다.
이 내 클래스 :
class Tool
{
private:
static Book* books;
public:
static char* pgetStringIntoArray(string);
static string* pgetStringFromArray(char*);
static void printCharArray(char*);
static bool* addBook(Book*);
static bool* isStored(Book*);
};
그리고이 문제가 갖는 방법 :
bool* Tool::isStored(Book* book)
{
bool* stored = new bool(false);
if(Tool::books)
{
cout << "NULL" << endl;
} else {
return stored;
}
}
'sizeof (books)'는'sizeof (Book *)'의 편리한 대안입니다. 표준 C++에서'sizeof'는 항상 컴파일 타임에 평가되며 런타임에 실제로 값을 검사하지 않습니다. 단지 관련 유형을 살펴 봅니다. 0으로 나누기 오류없이 sizeof (1/0)을 쓸 수도 있습니다; – fredoverflow
가능한 [sizeof (배열을 가리키는 포인터)를 찾는 방법] (http://stackoverflow.com)/question/492384/how-to-find-the-sizeofa-pointer-to-an-array) –