gpt4 book ai didi

c - 有没有办法在不使用 void 指针的情况下返回 C 函数中的任何类型?

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:50 24 4
gpt4 key购买 nike

我是 C 开发的新手,我想知道是否有任何方法可以像这段 Java 代码那样在 C 函数中返回任何类型:

public static Object returnAnyType(Object anyType){
//example useless code
return anyType;
}
public static void main(String[] args) {
System.out.println(returnAnyType('c'));
// outs 'c'
}

我知道有一种方法可以将任何类型的指针作为 C 中的 void 指针返回:

void* returnAny(void* anyType){
//example useless code
return anyType;
}

void main(){
char ch = 'c';
printf("%c\n", *(char*)returnAny(&ch));
// outs 'c'
}

而且我想知道是否可以在 C 中使用上述相同的 java 代码,而不必在返回类型和参数中使用 void 指针。到目前为止,我已经尝试使用 void 作为返回类型,但我的编译器不接受没有返回类型的 return 语句。

最佳答案

在 C 中很难表达对象之间的关系。对象只是一种特定的内存布局,因此无法在它们之间进行转换。您可以定义转换函数,仅此而已。

由于没有对象之间关系的概念,也就没有Java的Object这样的对象。

因此,不仅不可能有一个可以返回更通用的东西的函数,而且也不可能定义一个可以返回多种类型的函数。

void* 起作用只是因为任何指针都可以转换为 void*,这在任何意义上都不是特别的。

关于c - 有没有办法在不使用 void 指针的情况下返回 C 函数中的任何类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58457826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com