精华内容
下载资源
问答
  • java中形参作用域: 1): (传引用),执行作用域在执行完method方法后,形参不是立即释放内容空间 (类似:全部变量) 1. method(Map,BigDecimal> sMap); 2. method(Object object);2): 基本类型,以及一些封装类...

    java中形参作用域:
    一、内存区域类型
    1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制;
    1. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(对象可能在常量池里)(字符串常量对象存放在常量池中。);
    2. 堆:存放所有new出来的对象;
    3. 静态域:存放静态成员(static定义的);
    4. 常量池:存放字符串常量和基本类型常量(public static final)。有时,在嵌入式系统中,常量本身会和其他部分分割离开(由于版权等其他原因),所以在这种情况下,可以选择将其放在ROM中 ;
    5. 非RAM存储:硬盘等永久存储空间

    1): (堆),执行作用域在执行完method方法后,形参不是立即释放内容空间 (类似:全部变量)

        1. method(Map<String,BigDecimal> sMap);
        2. method(Object object);

    2): (栈)基本类型,以及一些封装类(BigDecimal,Integer)或者String
    执行完method方法,形参即释放内存空间 (类似:局部变量)

        1. method(String str);
    展开全文
  • 实际上,当作为实参进行传递时,在test*函数中都会为传递参数申请一个新的地址,但是仅为形参申请新的地址,例如在test2中,形参中的element元素的地址不变,由此真相大白,test1中在新的地址申请了新的内存空间得到...

    当指针作为实参时,究竟指针所指向的值在经过function后有没有改变?接下来做一下尝试以及分析。

    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    typedef struct node *Node;
    struct node{
    	int element;
    }newNode;
    
    int test1(Node node){
    	cout<<"test1 adress:"<<&(node->element)<<endl;
    	cout<<"test1:"<<node->element<<endl;
    	Node b;
    	b =(Node)malloc(sizeof(newNode));
    	b->element = 2;
    	node = b;
    	cout<<"test1 change adress:"<<&(node->element)<<endl;
    	cout<<"test1 change:"<<node->element<<endl;
    	return 1;
    }
    
    int test2(Node node){
    	cout<<"test2 adress:"<<&(node->element)<<endl;
    	cout<<"test2:"<<node->element<<endl;
    	node->element = 2;
    	cout<<"test2 change adress:"<<&(node->element)<<endl;
    	cout<<"test2 change:"<<node->element<<endl;
    	return 1;
    }
    
    int main(){
    	Node a;
    	a = (Node)malloc(sizeof(newNode));
    	a->element = 1;
    	cout<<"source adress:"<<&(a->element)<<endl;
    	cout<<"source element:"<<a->element<<endl<<endl;
    	int stat = test1(a);
    	cout<<"source test1 return adress:"<<&(a->element)<<endl;
    	cout<<"source test1 return element:"<<a->element<<endl;
    	cout<<endl;
    	int stat2 = test2(a);
    	cout<<"source test2 return adress:"<<&(a->element)<<endl;
    	cout<<"source test2 return element:"<<a->element<<endl;
    	return 0;
    }

    上述代码都将结构体指针作为实参传递给test1和test2,不同的是在test1中新创建一个Node,并且赋值给传递过来的结构体node,而在test2中直接修改node的element,大家猜猜输出是怎么样的呢?

    上图为输出,奇怪的是经过test1后,main中的Node a中的element没有改变,但是经过test2后由1变为了2。实际上,当作为实参进行传递时,在test*函数中都会为传递参数申请一个新的地址,但是仅为形参申请新的地址,例如在test2中,形参中的element元素的地址不变,由此真相大白,test1中在新的地址申请了新的内存空间得到Node b,此时形参node实际上并不是和main中的a为同一个地址,因此将b赋值给node对a不造成任何影响。而test2中,虽然node是一个新的地址,但是其元素element和main中a的element是同一个地址,因此修改node中的element就是修改a中的element。由此得出结论形参会申请新的地址,但形参本身的元素不会申请新的地址。

    展开全文
  • 函数形参作用域为整个函数体

    千次阅读 2013-11-21 11:28:08
    #include using namespace std; int func(int i){  int i; // 形参“i”的重定义  i=1;  return i; } int main(){  int a=func(2);  printf("%d",a); }
    #include <cstdio>
    
    using namespace std;
    int func(int i){
     int i;  // 形参“i”的重定义
     i=1;
     return i;
    }
    int main(){
     int a=func(2);
     printf("%d",a);
    }
    展开全文
  • final形参作用

    2012-06-28 16:42:03
    当定义一个final形参时,是保证这个形参的值在方法体运行中不被改变,也就是为了防止形参a在方法中被改变了,而在方法的其他地方只希望使用原始值
    当定义一个final形参时,是保证这个形参的值在方法体运行中不被改变,也就是为了防止形参a在方法中被改变了,而在方法的其他地方只希望使用原始值
    
    展开全文
  • 引用形参

    2015-09-18 16:43:23
    引用形参作用: 1、通过引用形参返回额外的信息、 2、利用const引用避免复制 如果使用引用形参的唯一目的是避免复制实参,则应将形参定义为const引用 定义为const引用,可以避免修改实参,而只使用了形参的
  • final 形参作用

    2014-06-19 19:06:34
    作用是防止形参a在方法中被改变了,而在方法的其他地方只希望使用原始值,如 static void fn(int a) {  a=5;//改变了,如果是常量,那么这里编译将不能通过 ……//若干条语句之后 int b=1/a;//这里我的a...
  • 函数形参作用域和传递方向

    千次阅读 2017-10-12 10:14:11
    #include using namespace std; int add(int a,int b) {int c=a+b; return c; } void main() ...在函数add中,已经定义了a和b的情况下,函数体中就可以直接使用;...说明,函数的形参作用域在函数体内;
  • 形参

    2017-11-06 21:47:56
    来源:牛客网   A:形式参数可被视为local variable。形参和局部变量一样都不能离开方法。都只有在方法内才会发生作用,也只有在方法中使用,不会在方法外可见。 B: 对于形式参数只能用final...
  • 如果想要精通学习C语言是比较困难的,除了在平时需要多思考之外,还需要在平时做好日常总结,在学习C语言的时候,有两种不同的参数,一种是形参,一种是实参,二者的作用范围是不同的,形参和实参是有很大区别的,...
  • 第7章 PHP函數和變數的作用域 7.1 自訂函數 函數 函數是指可以按照黑盒子的方式思考我們周圍的許多要解決的問題函數可讓使用者自由改變某些參數而且都能產生合理回應的黑盒子 自訂函數 自訂函數則是指程式設計師自行...
  • C++中引用作为形参作用

    千次阅读 2014-10-30 17:33:20
    引用作为形参,可以修改穿进去的东西,避免使用指针,
  • 函数在声明的时候可以预先给出默认形参值。调用时如果给出实参,那么就采用实参值,否则就使用给出的默认形参值。 【代码】 #include <iostream> using namespace std; int add(int a=3,int b=4){ return a+b...
  • const与&修饰函数形参作用
  • 函数形参

    2018-08-27 21:28:51
    函数形参 函数形参的定义方式: 位置形参 星号元组形参 命名关键字形参 双星字典形参 ...位置形参: ...def 函数名(形参名1,形参名2,...): ...* 作用:收集多余的位置传参 * 说明:元组形参名一般命名为...
  • python中的参数:形参实参 形参: 形式上的参数,可以理解为数学中的x,没有实际的值,通过别人赋值后才有意义。相当于变量 实参: 实际意义上的参数,是一个世纪存在的参数,可以是字符串或者数字等。 就是在函数...
  • 实参与形参的区别 使用 形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。 实参出现在主调函数中,进入被调函数后,实参变量也不能使用,无法修改。 调用 形参变量只有在被调用时才...
  • 添加链接描述 C++中函数形参使用const会使程序更加灵活。
  • 数组形参

    2018-03-25 02:23:27
    首先无 引用类型的数组,只有... 即数组在跨作用形参传递过程中。如果是引用形式传递则传递整体,否则传递的是其首地址。 如果未跨作用域(函数内部定义和使用),则作为整体使用。可通过 sizeof 运算符 验证。...
  • const形参与数组形参

    2019-09-23 12:13:28
    const形参形参是const时,要注意顶层const: const int ci = 42; //不能改变ci,const是顶层的 int i = ci; //正确,当拷贝ci时,忽略了它的顶层const int *const p = &i; //const是顶层的,不能给p...
  • 指针形参

    2016-07-07 11:07:02
    与其他非引用类型的形参一样,该类形参的任何改变也仅作用于局部副本。如果函数将新指针赋给形参,主调函数使用的实参指针的值没有改变。 事实上,被赋值的指针只影响对指针的赋值。如果函数形参是非const类型的...
  • 形参与实参

    2016-11-14 21:37:45
    形参作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。没有形参的函数在形参表的位置应该写void.main 函数也可以有形参和返回值,其形参也称为...
  • JS- 函数-形参实参-作用域 1 回顾 数组 1. 什么是数组 值的有序集合 数组中的每个成员称之为元素 元素具有位置,称之为索引 索引从 0 开始,必须是连续的 2. 声明数组三种方式 ① 数组直接量 [] ② Array() ...
  • 文章目录如何定义一个函数函数的嵌套函数的形参和实参函数的形参类型默认参数位置参数关键字参数可变参数+参数的解包函数的返回值函数的作用域 如何定义一个函数 函数的嵌套 函数的形参和实参 函数的...
  • 形参和实参

    万次阅读 多人点赞 2018-06-10 11:11:28
    形参作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。没有形参的函数在形参表的位置应该写int main(void) 函数也可以有形参和返回值,其形参也...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 140,441
精华内容 56,176
关键字:

形参的作用