mis*_*yes 0 c c++ pointers casting
在C中,如果我有两种类型的指针:
typeB *q;
typeA *p;
Run Code Online (Sandbox Code Playgroud)
在下面的int中,是否没有必要进行显式转换 (typeA *)
1 p= q is fine, no need to use p = (typeA *)q;
2 define: void func(typeA *p){}
call: func(q); is fine, no need to use func((typeA *)q)
3 p=malloc(sizeof(typeA)); is fine, no need to use p=(typeA *)malloc(sizeof(typeA))
Run Code Online (Sandbox Code Playgroud)
另外,C++是否相同?
谢谢!
我会假设它们是不相关的类型.如果它们都是相同类型的别名,则指向一个的指针可以隐式转换为指向另一个的指针.
没有; 在两种语言中,您需要使用强制转换来在不相关的指针类型之间进行转换 在C++中,如果typeA
是基类,则可以typeB
.
与第一个完全相同 - 两者都试图初始化typeA*
a typeB*
.
C很好; void*
可以隐式转换为任何对象指针类型.在C++中不允许这种转换; 但你通常不应该使用malloc
.
归档时间: |
|
查看次数: |
2600 次 |
最近记录: |