问题描述
- c++用(void *)和直接用*对数组名取地址有什么区别
-
char ch[5]="asdf";
cout<<(void * )ch;
cout<<* ch;
编译输出是一样的
有什么区别?
解决方案
就你这个例子来说,没有什么区别。但是对于结构体等复杂类型,区别就大了,void *得到的指针,如果你对它相加,可能和你用struct的指针相加得到的地址完全不同。
指针的类型决定了一个数据单位的大小。
解决方案二:
C++拾遗之对数组名取地址
对数组名取地址
解决方案三:
个人感觉还是 * ch 好一些,很少看见void*
解决方案四:
void*是任意类型
char* 是指定类型
解决方案五:
任意类型都能向(void*)转换
解决方案六:
void主要用来转换。没啥区别
解决方案七:
void * 不能判断属性的长度和一些属性, 只知道地址。 主要用来转换。
时间: 2024-11-01 01:28:47