c++用(void *)和直接用*对数组名取地址有什么区别

c++用(void *)和直接用*对数组名取地址有什么区别

问题描述:

char ch[5]="asdf";
cout<<(void * )ch;
cout<<* ch;
编译输出是一样的
有什么区别?

就你这个例子来说,没有什么区别。但是对于结构体等复杂类型,区别就大了,void *得到的指针,如果你对它相加,可能和你用struct的指针相加得到的地址完全不同。
指针的类型决定了一个数据单位的大小。

个人感觉还是 * ch 好一些,很少看见void*

void*是任意类型

char* 是指定类型

任意类型都能向(void*)转换

void主要用来转换。没啥区别

void * 不能判断属性的长度和一些属性, 只知道地址。 主要用来转换。