C++void*类型转换问题

2025-04-28 00:23:23
推荐回答(4个)
回答1:

#include

void main(void)
{
char ch = '#';
// p只是一个指针,本身存储的是你要存数据的地址,
// 你不提供它空间,怎么存储数据?
void *p = (void*)&ch;
*((char*)p)='c';
// 不能直接输出*p,因为没有对void数据的插入符<< 的重载。
cout << "*p = " << *((char*)p) << endl
<< "ch = " << ch << endl;
}

回答2:

c语言中不允许将一个数赋值给指针。'c'就是一个数,所以肯定是不行的。这个地方要赋一个字符串,"c".
另外指针复制方法也不对。应该是这样。
void* p;
( (cha*)p ) = "c";
如果掌握得不熟练,最好不要用void指针,容易乱

回答3:

void *p;只是定义了,根本没有分配空间,所以不能往里面写数据

回答4:

怎么会?我这里通过编译了啊 你看你是不是输漏了
你用的什么环境哦??
我用的是“TC超想中英文对照编程系统”
#include "stdio.h"
#include "malloc.h"

void main()
{
void *p;
char *q;

p = malloc(4);//你要给它点空间,它才可以给你装东西
*(char*)p = 'c';

q = p;
putchar(*q);

}
这样