把一个char * 类型的数据赋值给一个void * 类型的数据的具体实现是怎么样的??
我知道会发生强制类型转换,char * 是指向一个字节的指针, 转换成void * 是什么样的??很不明白
[解决办法]
数据本身没变,它还是它,就是看你用什么眼光来看待它
你可以认为它是char *,也可以认为它是void *
对于void *,可以转换为任意类型指针,而无需强制转换
[解决办法]
对于void *,可以转换为任意类型指针,而无需强制转换。
char * 是指向一个字节的指针, 转换成void * 一般用于:希望输出成地址的任何指针变量。
看下面的demo:
01.#include <iostream>
02.using namespace std;
03.
04.int _tmain(int argc, _TCHAR* argv[])
05.{
06. char *word = "again";
07. cout<<"Value of word is: "<<word<<endl
08. <<"Value of static_cast<void*>(word) is:"
09. <<static_cast<void*>(word)<<endl;
10. system("pause");
11. return 0;
12.}
运行结果:static_cast<void*>(word)是的地址。
具体可参考我的博客:
http://blog.csdn.net/feitianxuxue/article/details/7308063
欢迎提出意见
[解决办法]
转换来转换去无非是个地址,地址根本没变,只是编译器看待他的类型变了
[解决办法]
指针的本质就是一个int数据变量,存的是地址而已。int *p,char *p ,像这样char,int是修饰(*p),*p是p指向地址的内容,实际上是这个char是修饰的不是p本身存的内容。viod *是万能指针,就是说这个指针指想的的内容可以是任何类型。