转换int pointer为void pointer然后返回是否安全int pointer?
main()
{
...
int *a = malloc(sizeof(int));
...
*a=10;
func(a);
...
}
void func(void *v)
{
int x=*(int *)v;
...
}
Run Code Online (Sandbox Code Playgroud)
这是在函数中返回整数值的有效方法吗?
是的,这是安全的.标准是这样说的(6.3.2.3/1)
指向void的指针可以转换为指向任何不完整或对象类型的指针.指向任何不完整或对象类型的指针可能会转换为指向void的指针并再次返回; 结果应该等于原始指针.
它是"安全的",因为int => void => int转换产生的指针将与原始指针相同.
它不是"安全的",因为它很容易出错并且你必须要小心(也就是说,这种类型的代码在C中经常是必需的,因为void*它通常被用作泛化的一种形式).
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |