java代码- class testing
- {
- public static void main(String[] args)
- {
- int b = 4;
- add(b);
- System.out.println(b);
- }
- public static void add(int b){
- b = b+3;
- }
- }
复制代码 输出为4
C代码- #include<stdio.h>
- void add(int * x);
- int main(void){
- int b = 4;
- add(&b);
- printf("%d",b);
- return 0;
- }
- void add(int * x){
- *x = *x+3;
- }
复制代码 输出为7
问题如下:
如果改变java中主函数的b值?
众所周知C语言要利用函数改变主函数的值需要用到指针,但是貌似java没有类似操作
但是在java中传进数组,类这些却可以改变实际变量的值,令我想了一下,发现java (new)出来的类和数组
就类似于c/c++语言中malloc动态分配出来的空间那样,可以长期保留,并且由指针变量所引导,要调用的时候只要知道其指针变量就可以自由的操纵数据。所以当java传进这些参数的时候,就自动附其地址进去,而不是栈变量的直接传值。
不知道有没有同学有其他见解,一起讨论 |