나는 C에서이 일을 시도하고 충돌 : 다음 오류로C에서 void 포인터를 배열로 사용할 수 있습니까?
int nValue=1;
void* asd;
asd[0]=&nValue;
:
*error C2036: 'void**' *: unknown size
error C2100: illegal indirection*
나는 배열로 C의 무효 포인터를 사용할 수 있습니까?
내가 할 수 있다면 올바른 방법은 무엇일까요?
나는 C에서이 일을 시도하고 충돌 : 다음 오류로C에서 void 포인터를 배열로 사용할 수 있습니까?
int nValue=1;
void* asd;
asd[0]=&nValue;
:
*error C2036: 'void**' *: unknown size
error C2100: illegal indirection*
나는 배열로 C의 무효 포인터를 사용할 수 있습니까?
내가 할 수 있다면 올바른 방법은 무엇일까요?
이 같이 쓸 수 있습니다 :
int main()
{
int iv = 4;
char c = 'c';
void *pv[4];
pv[0] = &iv;
pv[1] = &c;
printf("iv =%d, c = %c", *(int *)pv[0], *(char *)pv[1]);
return 0;
}
Can I use a void pointer in C as an array?
아니요. void*
(으)로 변환 할 수는 있지만이를 추론 할 수는 없으며 생각할 때 의미가 있습니다.
알려지지 않은 유형을 가리키며 크기도 알 수 없습니다. 따라서 기본 포인터에서 오프셋 할 바이트 수를 알지 못하고 쓸 수있는 바이트 수를 알지 못하기 때문에 포인터 연산 (asd[0]
)을 수행 할 수 없습니다.
asd
(가능성이 높음)은 초기화되지 않았기 때문에 잘못된 메모리를 가리 킵니다. 이를 쓰거나 읽으면 정의되지 않은 동작이 호출됩니다.
'sizeof (void)'가 정의되지 않았 음을 확인하십시오 ;-) – oldrinb
'무효 *'역 참조 할 수 없지만 어떤 포인터 타입 사이에서 변환 할 수 있습니다. 즉, 당신은 여기에서'asd'를 초기화하지 않습니다 ... – oldrinb
당신은 이것을 어떻게하고 있습니까? – chris
당신이 무엇을 기대하고 있는지 확실하지 않습니다. – TJD