关于&什么时候在c++string上用的问题

P1106 删数问题 - 洛谷 | 计算机科学教育新生态 https://www.luogu.com.cn/problem/P1106



#include<bits/stdc++.h>
using namespace std;
string n;
int k;
string shanchu(int x){
    string s;
    for(int i=0;i<n.size();i++){
        if(i==x)
            continue;
            else
         s+=n[i];
    }
    return s;
}
void check(string &x){//这里什么时候用&什么时候不用捏? 
     if(x[0]=='0'){
       x=shanchu(0);    
     }
}
int main(){
    
    cin>>n;
    cin>>k;
    int cnt=0;
    int i=0;
    while(1){
    if(n[i]>n[i+1]){
        n=shanchu(i);
        check(n);
        i=0;
        cnt++;
        if(cnt==k)
        break;
    }
    else
    i++;
}
    for(int i=0;i<n.size();i++){
        cout<<n[i];
    }
    if(n.size()==0)//还有这个n.size()==0是什么意思捏?
        cout<<0;
    return 0;
    }

这个是照着题解自己理解着写的 void check后面的string x如果不加&的话就通过不了 那什么时候要加&呢
谢谢大家!

&表示引用啊,如果需要修改外部变量,就用&,类似指针