2 tach1bana Tach1banA 于 2015.07.17 18:59 提问

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

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

7个回答

caozhy
caozhy   Ds   Rxr 2015.07.17 19:02
已采纳

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

caozhy
caozhy 回复Tach1banA: 是什么类型就用什么类型的指针。如果是char就用char *
2 年多之前 回复
Tach1banA
Tach1banA 那用哪一个比较好呢?
2 年多之前 回复
CSDNXIAOD
CSDNXIAOD   2015.07.17 19:02

C++拾遗之对数组名取地址
对数组名取地址
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

cuiwei1026522829
cuiwei1026522829   Ds   Rxr 2015.07.17 22:53

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

tanggao1314
tanggao1314   2015.07.18 08:56

void*是任意类型

char* 是指定类型

CodeHouse
CodeHouse   2015.07.18 15:28

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

sq419412002
sq419412002   2015.07.20 11:46

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

lingzhu111
lingzhu111   2015.08.07 16:36

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

Csdn user default icon
上传中...
上传图片
插入图片