Java 对象的隐式传递与显式传递
C函数和java方法的一个区别是,对象在C中显式传递,在java中隐式传递,Java 对象的隐式传递与显式传递,java,parameter-passing,Java,Parameter Passing,C函数和java方法的一个区别是,对象在C中显式传递,在java中隐式传递, 任何人都可以提供一个例子来说明隐式和显式传递pls是什么?至少在Java中,如果它是通过引用传递的,那么传递的引用,我记得它在C中被调用的指针,是原始指针的副本,而不是原始指针本身 所以有一个内存区域,里面有关于这个对象的信息。然后有一个指向该内存区域的指针。当Java通过引用传递时,它首先将该指针复制到内存区域,然后将该指针副本作为参数传递 这与另一个按引用传递和按值传递的区别完全不同 至少在Java中,如果它是通过
任何人都可以提供一个例子来说明隐式和显式传递pls是什么?至少在Java中,如果它是通过引用传递的,那么传递的引用,我记得它在C中被调用的指针,是原始指针的副本,而不是原始指针本身 所以有一个内存区域,里面有关于这个对象的信息。然后有一个指向该内存区域的指针。当Java通过引用传递时,它首先将该指针复制到内存区域,然后将该指针副本作为参数传递
这与另一个按引用传递和按值传递的区别完全不同 至少在Java中,如果它是通过引用传递的,那么传递的引用,我记得它在C中调用的指针,是原始指针的副本,而不是原始指针本身 所以有一个内存区域,里面有关于这个对象的信息。然后有一个指向该内存区域的指针。当Java通过引用传递时,它首先将该指针复制到内存区域,然后将该指针副本作为参数传递
这与另一个按引用传递和按值传递的区别完全不同 我不知道你说的是什么意思,但也许你在寻找如何在C中实现面向对象风格 Java是一种真正的面向对象语言。这意味着它有类和对象。当您编写一个需要访问它所调用的对象的方法时,可以使用
this
关键字,该关键字指向所讨论的对象:
int getSomething()
{
return this._something;
}
因此,this
关键字的实际值取决于对象-然后将其视为参数的隐式参数
然而,在C语言中,没有真正的类或对象。如果你想实现OO风格的代码,你必须将与Java的this
相对应的参数(即,你调用“方法”的“对象”)显式地传递给函数。例如,在cURL网络库中:
CURL *hndl = curl_easy_init();
curl_easy_setopt(hndl, CURLOPT_URL, "http://example.com");
curl_easy_perform(hndl);
大致相当于以下一些OO代码:
CURL hndl = new CURL;
hndl->setopt(CURLOPT_URL, "http://example.com");
hndl->perform();
请注意,在C语言中,当以这种风格编写代码时,“对象”通常被称为“上下文”或“句柄”。我不确定您的意思,但也许您正在寻找如何在C语言中实现面向对象的风格 Java是一种真正的面向对象语言。这意味着它有类和对象。当您编写一个需要访问它所调用的对象的方法时,可以使用
this
关键字,该关键字指向所讨论的对象:
int getSomething()
{
return this._something;
}
因此,this
关键字的实际值取决于对象-然后将其视为参数的隐式参数
然而,在C语言中,没有真正的类或对象。如果你想实现OO风格的代码,你必须将与Java的this
相对应的参数(即,你调用“方法”的“对象”)显式地传递给函数。例如,在cURL网络库中:
CURL *hndl = curl_easy_init();
curl_easy_setopt(hndl, CURLOPT_URL, "http://example.com");
curl_easy_perform(hndl);
大致相当于以下一些OO代码:
CURL hndl = new CURL;
hndl->setopt(CURLOPT_URL, "http://example.com");
hndl->perform();
注意,在C语言中,以这种风格编写代码时,“对象”通常被称为“上下文”或“句柄”。我不认为OP指的是“通过值传递与引用传递”现象。我不认为OP指的是“通过值传递与引用传递”现象。你能提供这种说法的来源吗?你能给我们一个明确和隐含的定义吗?这些术语通常与引用传递无关,也就是说,它们不是众所周知的技术术语,在这种情况下具有一致的定义。你能提供该语句的来源吗?你能给我们一个关于显式和隐式的定义吗?这些术语通常与引用传递无关,也就是说,它们不是在这种情况下具有约定定义的众所周知的技术术语。