Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对象的隐式传递与显式传递_Java_Parameter Passing - Fatal编程技术网

Java 对象的隐式传递与显式传递

Java 对象的隐式传递与显式传递,java,parameter-passing,Java,Parameter Passing,C函数和java方法的一个区别是,对象在C中显式传递,在java中隐式传递, 任何人都可以提供一个例子来说明隐式和显式传递pls是什么?至少在Java中,如果它是通过引用传递的,那么传递的引用,我记得它在C中被调用的指针,是原始指针的副本,而不是原始指针本身 所以有一个内存区域,里面有关于这个对象的信息。然后有一个指向该内存区域的指针。当Java通过引用传递时,它首先将该指针复制到内存区域,然后将该指针副本作为参数传递 这与另一个按引用传递和按值传递的区别完全不同 至少在Java中,如果它是通过

C函数和java方法的一个区别是,对象在C中显式传递,在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指的是“通过值传递与引用传递”现象。你能提供这种说法的来源吗?你能给我们一个明确和隐含的定义吗?这些术语通常与引用传递无关,也就是说,它们不是众所周知的技术术语,在这种情况下具有一致的定义。你能提供该语句的来源吗?你能给我们一个关于显式和隐式的定义吗?这些术语通常与引用传递无关,也就是说,它们不是在这种情况下具有约定定义的众所周知的技术术语。