码迷,mamicode.com
首页 > 编程语言 > 详细

c++ 函数调用在进入下一个循环的时候会再次初始化参数,将函数体直接写进去就正常

时间:2015-12-28 14:02:50      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include"stdafx.h"
 2 #include"string"
 3 #include<iostream>
 4 #include<vector>
 5 
 6 #include<string.h>
 7 using namespace std;
 8 
 9 int add_color(vector<string> v1, vector<int> v2, string s)
10 {
11     cout << v1.size() << " " << v2.size() << endl;
12     //cout << "test" << endl;
13     if (v1.size() == 0)
14     {
15         
16         v1.push_back(s);
17         v2.push_back(1);
18     //    cout << v1[0];
19     }
20     
21     else
22     {
23         int i = 0;
24         for (; i<v1.size();)
25         {
26             if (!strcmp(v1[i].c_str(), s.c_str()))
27             {
28                 v2[i]++;
29                 //i++;
30                 break;
31             }
32             else
33             {
34                 i++;
35             }
36 
37         }
38         if (i == v1.size())
39         {
40             v1.push_back(s);
41             v2.push_back(1);
42         }
43     }
44 
45     cout << v1.size() << " " << v2.size() << endl;
46 
47     return 0;
48 }
49 
50 int find_max(vector<string> v1, vector<int> v2)
51 {
52     int max;
53     max = 0;
54     for (int i = 0; i<v2.size() - 1; i++)
55     {
56         for (int j = i + 1; j<v2.size(); j++)
57         {
58             if (v2[i] <= v2[j])
59             {
60                 max = j;
61             }
62         }
63     }
64     return max;
65 }
66 
67 int main(void)
68 {
69     int N;
70     cout << "input N:";
71     cin >> N;
72 
73     vector<string> v1;
74     vector<int> v2;
75     string s;
76 
77     while (N)
78     {
79         //string s;
80         cin >> s;
81         add_color(v1, v2, s);
82         //add_color(v1, v2, s);
83         cout << v1.size() << endl;
84         N--;
85     }
86 
87     cout << endl;
88     int max = find_max(v1, v2);
89     cout << v1[max] << endl;
90 
91 }

在调用add_color的时候,无法正常执行下去,将函数体直接写在循环里就没有问题

问了别人,是参数调用的问题

 

C++参数调用有三种,值传递,指针传递,引用传递

值传递实际上只是传递的实际参数的一个副本,并不是原参数,这样的原因是可以实现对实际参数的保护;

指针传递,则传递的是地址;

引用传递,对形参的操作等同于对实参的操作,即传递的不会是实参的副本,而是实参;

 

具体的例子可以看一下http://www.cnblogs.com/Romi/archive/2012/08/09/2630014.html

 

c++ 函数调用在进入下一个循环的时候会再次初始化参数,将函数体直接写进去就正常

标签:

原文地址:http://www.cnblogs.com/wswang/p/5082186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!