unsigned char
포인터의 용도는 무엇입니까? 많은 곳에서 포인터가 포인터로 타입 캐스트되어있는 것을 보았습니다 unsinged char
왜 그렇게할까요?부호없는 char 포인터를 사용하는 경우
int
에 대한 포인터를받은 다음 unsigned char*
에 입력하십시오. 그러나 우리가 cout을 사용하여 그 배열에 요소를 인쇄하려고하면 아무 것도 출력하지 않습니다. 왜? 난 이해가 안 돼요. 나는 C++을 처음 사용합니다.
편집 샘플 코드
int Stash::add(void* element)
{
if(next >= quantity)
// Enough space left?
inflate(increment);
// Copy element into storage, starting at next empty space:
int startBytes = next * size;
unsigned char* e = (unsigned char*)element;
for(int i = 0; i < size; i++)
storage[startBytes + i] = e[i];
next++;
return(next - 1); // Index number
}
문자 포인터로 변환 할 때 첫 번째 바이트는 아마도 문자열 종결 자와 동일한 0 일 것이므로 아무 것도 인쇄되지 않습니다. 실제로하는 일을 보여줄 수 있다면 더 많은 도움이 될 것입니다. 즉, 코드를 게시하십시오. [SSCCE] (http://sscce.org/)를 작성하고 질문에 추가하십시오. –
하지만 첫 번째 바이트가 0이고 실제로 4 바이트를 모두 인쇄하려고 시도하지만 아무 것도 인쇄하지 않으면 정보가 느슨해 질 것이라고 생각합니다. –
귀하의 질문은 "언제"보다는 "이유"에 관한 것 같습니다. 매우 자주,'unsigned char * '는 다른 형식의 변수 나 메모리 주소에 도달하기위한 바이트 레벨 액세스 메소드로 사용됩니다. 그 중에서도 엄격한 앨리어싱 규칙에 대한 면책 사항과 귀하가 던지는 주소와의 표준 보장 정렬에 대한 많은 신빙성이 있습니다. C++을 처음 접했을 때, C에 익숙하다면이 작업을 어렵게해서는 안됩니다. * 프로그래밍 *에 익숙하지 않은 분은 이것을 이해하기 어려운 것으로 생각합니다. 아마도 몇 가지 코드와 생각을 가지고있을 것입니다. – WhozCraig