相关疑难解决方法(0)

C甚至有"通过引用传递"吗?

I heard that in "c" that there are we can pass the arguments via "call by value" or "call by reference". But in one book it's mentioned that there are we can pass the arguments via both way but there is no "pass by reference" but I actually pass the mostly arguments by "pass by reference".

So why it is mentioned "does C even have "pass by reference"?

A detailed description will be greatly appreciated.

c pointers

4
推荐指数
2
解决办法
4684
查看次数

Python,Java,C:通过引用传递或通过值差异传递

我刚刚阅读了以下关于通过引用传递和通过值传递的文章:http://qntm.org/call

所以只是为了确保我正确理解......这是否意味着在函数中按值调用不会改变原始输入,只改变该输入的本地副本?但是,因为在Java和Python中,值实际上是对值的引用,这是否意味着在函数中按值调用会改变原始输入?

c python java

4
推荐指数
1
解决办法
1685
查看次数

在Java布尔数组中命名布尔元素

我被困在一件简单的事情上.我有一系列名为"标签"的布尔值.能够通过布尔值访问数组的每个元素对我来说很重要:

public boolean energetic, calming, happy, sad;
public boolean[] trackTags = {energetic, calming, happy, sad};
Run Code Online (Sandbox Code Playgroud)

我传入并为trackTags数组分配布尔值(让我们说[true,true,true,false].所以,当我调用trackTags [0]时,我得到"真实".但是,当我打印"精力充沛"时 -它应该与trackTags [0]相同,值总是为false.我知道布尔值初始化为false,但是当我在trackTags数组中切换某些值为"true"时,命名元素是否也不会改变?

第二个问题:对于我与布尔变量名称交互的好方法是什么?具体来说,如果我传入一个String [] [happy,sad],然后只想切换对应于我的String数组中名称的boolean []值,这是否可行?我在循环遍历两个数组的元素时没有问题,但我显然无法将字符串与布尔值进行比较.

总而言之,是否有更好的方式与布尔名称进行交互?我真的很困惑.

java arrays

4
推荐指数
2
解决办法
897
查看次数

设置后,Java数组引用为null

public abstract class Class1 {
    protected static Object object1 = null;
    protected static Object object2 = null;

    public static Object[] objects = { object1, object2 };

    public static void main(String[] args) {
        new Class2();

        for (Object o : objects) {
            System.out.println(o);
        }
    }
}

public class Class2 extends Class1 {
    public Class2() {
        Class1.object1 = new String("String 1");
        Class1.object2 = new String("String 2");
    }
}
Run Code Online (Sandbox Code Playgroud)

这输出:

null
null
Run Code Online (Sandbox Code Playgroud)

为什么?

当我创建一个新实例时Class2,该类的构造函数初始化object1object2.

objects据我所知,包含对这些对象的引用.所以在他们初始化之后,我期待任何东西,但是无效.

有人能解释一下吗 谢谢.

java

4
推荐指数
1
解决办法
80
查看次数

将值从方法返回到另一个方法

谁能告诉我,为什么返回的值是3,而不是8不中return x从语句addFive方法改变的值xmain方法是什么?

public class App {
    public static void main(String[] args) {
        int x=3;
        addFive(x);
        System.out.println("x = " + x);
    }

    private static int addFive(int x) {
        x += 5;
        return x;
    }
}
Run Code Online (Sandbox Code Playgroud)

java

4
推荐指数
2
解决办法
3万
查看次数

Java - 在匿名方法中更改参数对象

我今天遇到了这个,我无法理解正在发生的事情.

目的是创建一个可以更改参数对象的匿名方法.我虽然想出了一种智能的方法来传递值并在不同对象之间修改它们而没有对另一个对象的明确知识,但是有些事情是错误的.以下代码概述了一般问题:

void foo() {
    String a = "foo";

    MethodMap.addMethod("1", new Method() {
        @Override
        public void execute(Object ... args) {
             args[0] = "bar";
        }
    } );
    MethodMap.invoke("1", a);
    System.out.println(a);
}

class MethodMap {
    private static Map<String, Invocation> map = new HashMap<>();

    public static boolean addMethod(String key, Invocation method) {
        map.put(key, method);
    }

    public static void invoke(String key, Object ... args){
        map.get(key).execute(args);
    }
}

public interface Invocation {
    public void execute(Object ... args);
}
Run Code Online (Sandbox Code Playgroud)

我的意图是这个代码应该输出bar,但它输出foo.我不太确定为什么.是不是通过引用传递了Java对象?在那种情况下,我不应该修改它们吗?

有人可以解释一下我错过了什么吗?

我对该领域术语的了解可能实际上限制了我在网上搜索这个术语的能力,因为我不知道谷歌会说些什么. …

java anonymous

4
推荐指数
1
解决办法
223
查看次数

String vs StringBuffer返回值

能否请您解释为什么在下面的代码StringStringBuffer区别对待,当价值被附加StringBuffer,但不是在字符串。

public class MyClass {

    public static void main(String args[]) {
        String str = new String("String Rohan ");
    StringBuffer strBfr = new StringBuffer("String Buffer Rohan "); 

        strUpdate(str);
        strBfrUpdate(strBfr);

        System.out.println(str);
        System.out.println(strBfr);

    }

    private static void strBfrUpdate(StringBuffer strBfr){
        strBfr.append("Kushwaha");
    }

    private static void  strUpdate(String str){
        str += "Kushwaha";
    }
}
Run Code Online (Sandbox Code Playgroud)

输出如下:

串罗汉

字符串缓冲区Rohan Kushwaha

java string stringbuffer

4
推荐指数
1
解决办法
851
查看次数

这怎么称为Pass By Reference?

根据教程,Python使用"Pass By Reference".

然后他们继续给出以下示例.在这个"通过参考传递"的星球上?它看起来像是一个明确的"通过价值"案例给我.

思考?

def changeme( mylist ):
   mylist = [1,2,3,4];
   print "Values inside the function: ", mylist
   return

mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist
Run Code Online (Sandbox Code Playgroud)

参数mylist是函数changeme的本地.更改函数中的mylist不会影响mylist.该函数什么都不做,最后会产生以下结果:

# Values inside the function:  [1, 2, 3, 4]
# Values outside the function:  [10, 20, 30]
Run Code Online (Sandbox Code Playgroud)

python terminology pass-by-reference pass-by-value

4
推荐指数
2
解决办法
122
查看次数

a = b和b = a之间的差异?

我必须得到一些直接的东西.请告诉我我是否正确:

String a;
String b;
Run Code Online (Sandbox Code Playgroud)

a = b表示b取a的值?

b = a表示a取b的值?

我对这个很尴尬,我很感激解释.

java

4
推荐指数
2
解决办法
961
查看次数

Java 通过引用传递构造函数

我为测试类创建了两个对象,在那里我传递了值10 and 20,当我将第二个对象传递给测试构造函数时。它返回我0 0而不是40, 4作为输出。谁能解释我为什么会这样?

class Test{
        public int a,b;
        Test(){
                a=-1;
                b=-1;
        }
        Test(int i,int j){
                a=i;
                b=j;
        }
        void mest(Test o){
                o.a*=2;
                o.b=2*2;
        }
        Test(Test ob){
                ob.a*=2;
                ob.b=2*2;
        }
}
public class Main{
        public static void main(String[] args){
                Test t = new Test(10,20);
                System.out.println(t.a +" "+ t.b);// 10, 20
                t.mest(t);      
                System.out.println(t.a +" "+ t.b);// 20, 4
                Test t2 = new Test(t);
                System.out.println(t2.a +" "+ t2.b); // 0 , 0
        }
}
Run Code Online (Sandbox Code Playgroud)

java

4
推荐指数
1
解决办法
114
查看次数