精华内容
下载资源
问答
  • C++结构体作为函数参数传参

    万次阅读 2020-06-25 10:45:56
    #include<iostream> using namespace std; #include<... *结构体作为函数参数传参 */ //值传递 void printStufdent1(struct Student st3) { cout << "子函数" << endl; st3.age .
    #include<iostream>
    using namespace std;
    
    #include<string>
    
    
    //结构体
    struct Student {
    
    	string name;
    	int age;
    	int score;
    
    }st3;
    
    
    /*
     *结构体作为函数参数传参
     */
    //值传递
    void printStufdent1(struct Student st3) {
    	cout << "子函数" << endl;
    	st3.age = 100;
    
    	cout << "名字:" << st3.name << "	年龄:" << st3.age << "	分数:" << st3.score << endl;
    
    }
    //地址传递
    void printStufdent2(struct Student * p) {
    	p->age = 200;
    	cout << "子函数" << endl;
    	cout << "名字:" << p->name << "	年龄:" << p->age << "	分数:" << p->score << endl;
    
    }
    
    
    int main() {
    
    	struct Student st1;
    	st1.name = "zhangsan";
    	st1.age = 18;
    	st1.score = 60;
    	//cout << "名字" << st1.name << "年龄" << st1.age << "分数" << st1.score<< endl;
    	struct Student st2={"李四",20,70};
    //	cout << "名字" << st2.name << "年龄" << st2.age << "分数" << st2.score<< endl;
    	
    	
    	st3.name = "王五";
    	st3.age = 19;
    	st3.score = 59;
    
    	printStufdent1(st3);
    	cout << "main函数" << endl;
    	cout << "名字:" << st3.name << "	年龄:" << st3.age << "	分数:" << st3.score << endl;
    
    	printStufdent2(&st3);
    	cout << "main函数" << endl;
    	cout << "名字:" << st3.name << "	年龄:" << st3.age << "	分数:" << st3.score << endl;
    
    	system("pause");
     }
    
    

    从结果我们知道结构体作为函数的参数传参有两种形式 

    展开全文
  • wpf 不同窗口传参 传参新程序
  • params传参和query传参

    万次阅读 2018-07-20 09:43:29
    写下前面:当你使用params方法传参的时候,要在路由后面加参数名,并且传参的时候,参数名要跟路由后面设置的参数名对应。使用query方法,就没有这种限制,直接在跳转里面用就可以。  注意:如果路由上面不写参数...

    写下前面:当你使用params方法传参的时候,要在路由后面加参数名,并且传参的时候,参数名要跟路由后面设置的参数名对应。使用query方法,就没有这种限制,直接在跳转里面用就可以。

            注意:如果路由上面不写参数,也是可以传过去的,但不会在url上面显示出你的参数,并且当你跳到别的页面或者刷新页面的时候参数会丢失(如下图所示),那依赖这个参数的http请求或者其他操作就会失败。

    1. 

    <template>

     <div class="router1">

     <h1>接收参数的路由</h1>

     <h1> params.id:{{ $route.params }}</h1>

     <h1>query.status:{{ $route.query.queryId }}</h1>

     <keep-alive>

      <router-view></router-view>

     </keep-alive>

     </div>

    </template>

    2. 

    params传参和query传参有什么区别: 

    (1)、用法上的

    刚query要用path来引入,params要用name来引入,接收参数都是类似的,分别是this.$route.query.name和this.$route.params.name。

    注意接收参数的时候,已经是$route而不是$router了哦!!

    (2)、展示上的

    query更加类似于我们ajax中get传参,params则类似于post,说的再简单一点,前者在浏览器地址栏中显示参数,后者则不显示

    query:

          

    params: 

    (3)、params是路由的一部分,必须要有。query是拼接在url后面的参数,没有也没关系。

    params一旦设置在路由,params就是路由的一部分,如果这个路由有params传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容。

    比如:跳转/router1/:id

    1

    2

    <router-link :to="{ name:'router1',params: { id: status}}" >正确</router-link>

    <router-link :to="{ name:'router1',params: { id2: status}}">错误</router-link>

    (4)、params、query不设置也可以传参,params不设置的时候,刷新页面或者返回参数会丢失,这一点的在上面说过了

    展开全文
  • Vue router 如何传参 params、query 是什么? params:/router1/:id,这里的 id 叫做 params。例如/router1/123, /router1/789 query:/router1?id=123,这里的 id 叫做 query。例如/router1?id=456 query 方式传参...
  • vue编程式导航,在这里我们必须要明白一个知识点,就是params和query传参的用法。   params传参,路径不能使用path,只能使用name,不然取不到传的数据。 this.$router.push({name:'Good',params:{goodsId:id}})...

     

    vue编程式导航,在这里我们必须要明白一个知识点,就是params和query传参的用法。

     

    params传参,路径不能使用path,只能使用name,不然取不到传的数据。

    this.$router.push({name:'Good',params:{goodsId:id}})

    取数据时用params获取

    this.$route.params.goodsId

     

    query传参,用的是path,而不是name,否则也会出错。

    this.$router.push({path:'/Good',query:{goodsId:id}})

    取数据使用query

    this.$route.query.goodsId

     

    如果使用了以上两种传参方式,使用时我们可以做一下兼容处理

    this.goodsId= this.$route.query.goodsId ? this.$route.query.goodsId:this.$route.params.goodsId

     

     

     

     

     

    展开全文
  • 传参、指针传参、引用传参

    千次阅读 2017-07-02 01:46:25
    3种传参方式:值传参、指针传参、引用传参我们知道传参方式有3种:值传参、指针传参、引用传参。这三种方式书写方式各有不同,接下来,我们简单介绍3种传参方式实现的机制。首先看一个程序:这个程序实现的是交换2个...

    3种传参方式:值传参、指针传参、引用传参

    我们知道传参方式有3种:值传参、指针传参、引用传参。这三种方式书写方式各有不同,接下来,我们简单介绍3种传参方式实现的机制。首先看一个程序:这个程序实现的是交换2个变量的值。

    #include <iostream>
    //交换函数
    void val_swap(int a, int b);   //值传参
    void ptr_swap(int *a, int *b); //指针传参
    void ref_swap(int &a, int &b); //引用传参
    int main(int argc, char* argv[])
    {
        int a = 10, b = 20;
        std::cout << "值传参前,a = " << a << ", b = " << b << std::endl;
        val_swap(a,b);
        std::cout << "值传参后,a = " << a << ", b = " << b << std::endl;
        std::cout << std::endl;
    
        std::cout << "指针传参前,a = " << a << ", b = " << b << std::endl;
        ptr_swap(&a, &b);
        std::cout << "指针传参后,a = " << a << ", b = " << b << std::endl;
        std::cout << std::endl;
    
    
        std::cout << "引用传参前,a = " << a << ", b = " << b << std::endl;
        ref_swap(a, b);
        std::cout << "引用传参后,a = " << a << ", b = " << b << std::endl;
        std::cout << std::endl;
    
        getchar();
        return 0;
    
    }
    
    void val_swap(int a, int b) {
        int temp = a;
        a = b;
        b = a;
    }
    void ptr_swap(int *a, int *b) {
        int temp = *a;
        *a = *b;
        *b = temp;
    }
    
    void ref_swap(int &a, int &b) {
        int temp = a;
        a = b;
        b = temp;
    }

    实现结果:

    1. 值传参并没有实现交换功能。我们可以通过反汇编查看一下它的内部实现机制。汇编代码如下。
    31:     int temp = p;
    01301D1E  mov         eax,dword ptr [p]  
    01301D21  mov         dword ptr [temp],eax  
        32:     p = q;
    01301D24  mov         eax,dword ptr [q]  
    01301D27  mov         dword ptr [p],eax  
        33:     q = temp;
    01301D2A  mov         eax,dword ptr [p]  
    01301D2D  mov         dword ptr [q],eax  

    从汇编指令可以看出,函数值传参是把所传的值压栈,然后赋值给形参,例如主函数中的a传给p时,先将a压栈,然后将这个栈地址所指向的值赋值给p。这样操作的话,就是局部变量之间的交换,而不是外部变量的交换,所以值传参交换失败。

    2.指针传参

    36:     int temp = *p;
    01301C9E  mov         eax,dword ptr [p]  
    01301CA1  mov         ecx,dword ptr [eax]  
    01301CA3  mov         dword ptr [temp],ecx  
        37:     *p = *q;
    01301CA6  mov         eax,dword ptr [p]  
    01301CA9  mov         ecx,dword ptr [q]  
    01301CAC  mov         edx,dword ptr [ecx]  
    01301CAE  mov         dword ptr [eax],edx  
        38:     *q = temp;
    01301CB0  mov         eax,dword ptr [q]  
    01301CB3  mov         ecx,dword ptr [temp]  
    01301CB6  mov         dword ptr [eax],ecx 

    指针传参是将该实参的地址传给形参,在调用的过程中,通过地址去寻找相应值进行交换,所以指针传参交换成功。
    3. 引用传参

    42:     int temp = p;
    01301CDE  mov         eax,dword ptr [p]  
    01301CE1  mov         ecx,dword ptr [eax]  
    01301CE3  mov         dword ptr [temp],ecx  
        43:     p = q;
    01301CE6  mov         eax,dword ptr [p]  
    01301CE9  mov         ecx,dword ptr [q]  
    01301CEC  mov         edx,dword ptr [ecx]  
    01301CEE  mov         dword ptr [eax],edx  
        44:     q = temp;
    01301CF0  mov         eax,dword ptr [q]  
    01301CF3  mov         ecx,dword ptr [temp]  
    01301CF6  mov         dword ptr [eax],ecx  

    引用传参与指针传参实现的机制完全相同,这涉及到引用的本质是指针常量。但是引用在传参方面有更简洁,不会出现书写的错误。

    常量引用传参

    由上面我们可以得知,普通的指针传参和引用传参的实现机制是完全相同的,但是引用传参书写更加简洁。

    引用有一个特殊的传参方式:常量引用传参,该方式用于在函数体内部不想改变形参的值。
    比如:
    Void func(const int &a);
    这样传参的方式,函数体内部不能够改变变量a的值,而且这样写的程序更加规范,如果该函数体是这样写的:
    Void func(int &a);
    那么,如果我有一个const int a的值要传给这个函数将会报错。

    传值与传引用的效率对比

    请见博客:http://www.cnblogs.com/QG-whz/p/5129173.html

    总结:

    1. 传值调用(Call by Value):函数(方法)在调用参数时,不是对原参数进行操作,而是创建参数的拷贝并对其进行操作,即只是利用它来进行其他计算而不改变其值。
    2. 引用是独占的,即一旦创建了引用并初始化为某特定对象,它将总是引用此对象,给引用赋值并不会使它“指向”另外的对象,只是改变了对象的值。
    3. 传地址:是传值的一种特殊方式,只是它传递的是地址,不是普通的如int 。那么传地址以后,实参 和行参都指向同一个对象。

    4. 以下是必须使用引用传参的情况:
      1:当大型的类对象必须作为参数传递时对实际的应用程序而言分配对象并拷贝到栈中的时间和空间开销往往过大.
      2:当实参的值必须被修改时,例如在函数swap()中用户想改变实参的值但是在按值传递的情况下无法做到.

    5. 使用常量引用的情况: 在函数体内部不想改变形参的值
    6. 对内置类型来说,通常传值更高效。对用于自定义类型来所,传值要经历构造与析构过程,一般比较耗时
    展开全文
  • 今天在页面间使用$router.push传参时,发现页面刷新数据之后,路由中params的数据丢失了。 解决办法 1.继续使用params传参 继续使用params传参,需要在对应路由中添加参数,用来存储(不知道这么说对不对)params中...
  • query传参和params传参

    2020-12-07 18:45:00
    url传参问题: 1)params传参:/about/110 规则: {path:"/about/:id",name:"about",component:About}, 在组件中获取: this.$route.params.id 2)query传参:/about?id=110 规则: {path:"/home",name:"home", ...
  • 命令行传参

    2020-11-23 16:05:29
    命令行传参 命令行传参时必须回到src目录下
  • IIFE传参

    2019-09-02 08:58:07
    IIFE传参
  • C与C++关于*与&(引用方式传参,传值方式传参

    万次阅读 多人点赞 2018-08-13 23:29:43
    一个例子 补全该代码: 用C++: 用C:是把地址传进去,然后用*运算取地址的内容 ...2、传值方式传参,实际上是复制了一个外部变量的副本进入函数中,在函数内操作的为该副本,对该变量的修改...
  • react事件传参

    万次阅读 2019-05-11 22:36:03
    React触发事件的时候如何传参? 第一种方法使用箭头函数将其包裹起来: //在上面自定义的方法 test = (name) => { console.log(name) } //在render里面的代码 <button onClick={() => this.test('...
  • uniapp的事件传参 uniapp的路由传参
  • MyBatis传参

    2021-03-28 17:21:31
    sql语句中使用#{任意字符}进行传参 传入多个参数 使用arg0~argN进行传参 使用param1~paramN进行传参传参的时候使用注解自定义变量名@Param("自定义名称") 多个参数中有对象时paramN.属性名 传入一个对象 只有...
  • Postman的Params传参和body传参的区别

    万次阅读 2020-03-04 22:21:14
    我相信很多人都很迷惑postman工具的params和body两个地方传递参数的区别,到底放那里?...谜底揭晓:Params处设置的变量请求时会url后问好传参。而Body里设置的参数则是接口真正请求时发的参数。 ...
  • 普通传参和引用传参

    千次阅读 2018-10-03 14:24:22
    引用传参 int &amp;x一般只用于函数的参数中,而int x不只用在函数传参的过程。 int &amp;x写作参数时,传递变量是该实参的引用类型,函数执行过程可以改变实参的值;而int y传递的是实参的拷贝,函数执行...
  • 路由传参

    2019-07-14 22:34:34
    路由传参 在node.js后端路由有三种传参方式 1,get传参 把参数拼接在地址栏 url?key=value&k=v… 接收: 用req.query 2,post传参 在请求的主体传参 接收:用req.body 3,path传参 /key/100 (/key/:id) 接收:...
  • 今天小编就为大家分享一篇对vue下点击事件传参和不传参的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 1、创建Bus.js。 挂载一个vue实例 ...2.引入要用的组件(组件one和组件two是兄弟组件)想通过bus.js传参。 one组件 <template> <div>one组件 <input v-model="oneMsg" /> ...
  • Ref传参

    2019-10-28 23:00:16
    一:什么是Ref传参 1:让参数按照引用传递。期效果是,当控制权传递回调用方法时,在方法中对参数所做的任何修改都将反映到改变量中,也等同于将值类型的数据使用引用方式传参。若要使用Ref传参,则方法定义和调用...
  • 动态路由传参和params一起传参的时候, this.$router.push({ path: ‘/home/:id’, params: { type: ‘11’ } }) 在需要参数的页面打印结果,不会出现内容params的内容 所以我猜想,params和path不应该一起使用,...
  • 传参和引用传参

    2017-11-25 09:20:40
    传参和引用传参问题 @Test public void referTest(){ String a = "a"; String b = "b"; StringBuilder A = new StringBuilder("A"); StringBuilder B = new StringBuilder("B");
  • ES6 中类的写法,事件传参 //ES6 中讲到的类 class Box{ //这个需要再次巩固一下, num=3; constructor(){ //这个是构造函数 this.elem=this.create(); //create创建,这个是赋值的...
  • 1、值传参,对形参的任何操作都不会对实参产生影响 1.1:值传参方法 //值传参 void NoChangeValue(int v) { printf("值传参修改前的值 = %d\n", v); v = 10; printf("值传参修改...
  • 函数 传参

    2018-02-02 13:49:42
    函数的参数传递:参数传递 (实参交给形参的方式)传递方式: 位置传参, 序列传参, 关键字传参,字典关键字传参位置传参 实参和形参通过位置 关系进行传递和匹配, 实参的个数必须与形参的个数相同 序列传参: 序列...
  • query传参方式: 传参: this.$router.push({ path:’/xxx’ query:{ id:id } }) 接收参数: this.$route.query.id params传参方式: 传参: this.$router.push({ name:‘xxx’ params:{ id:id } }) 接收参数: this.$...
  • 近日在使用golang的过程中发现golang的函数传参和python的稍有区别,现总结记录如下: golang函数传参 1. 当传数组时 会将整个数组全都复制后进行值传递(函数修改数组后并不会影响数组的值),当数组比较大时,每次...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,216
精华内容 22,486
关键字:

传参