天天看點

c++結構體做函數參數問題 vector做參數問題

1.結構體名傳遞的也隻是副本

2.結構體指針做形參  實參傳遞結構體名位址 才是位址傳遞

#include<iostream>
using namespace std;

struct node
{
  int age;
  node(){age=0;}
  node(int age){this->age=age;}
};

void add1(node no){
  no.age++;
}

void add2(node* no){
  no->age=no->age+1;//指針不能. 隻能用->
}

int main(){
  freopen("input.txt","r",stdin);
  node n1;
  n1.age=10;

  //結構體名傳遞的也隻是副本
  add1(n1);
  cout<<n1.age<<endl;

  //結構體指針做形參  實參傳遞結構體名位址 才是位址傳遞
  add2(&n1);
  cout<<n1.age<<endl;

  return 0;
}      
c++結構體做函數參數問題 vector做參數問題
#include<iostream>
#include<vector>
using namespace std;

void Clear(vector<int> v){
  v.clear();
  cout<<"函數内:"<<v.size()<<endl;
}

int main(){
  vector<int> vi;
  vi.push_back(1);
  vi.push_back(2);
  vi.push_back(3);
  cout<<"Clear前:";
  cout<<vi.size()<<endl;
  Clear(vi);
  cout<<"Clear後:";
  cout<<vi.size()<<endl;
  return 0;
}