C++明明有函数声明,为什么不起作用?

void rnk(int x[20]) {
    int n = (sizeof(x) / sizeof(int));
    int p = 0;

    for (int i = 0; i < n; i++) {
        for (p = 0; p < n - 1 - i; p++) {
            while (x[p] > x[p + 1])
            {
                int tmp = 0;
                tmp = x[p];
                x[p] = x[p + 1];
                x[p + 1] = tmp;
            }
        }
    }
   
}
int main()
{
    int a[20], t, i = 0;
    memset(a, 0, sizeof(a));
    while (cin >> t) {//输入任意个整数(小于20个)
        a[i] = t;
        i++;
    } 
    rnk(a);
    
    for (int i = 0; i < 20; i++) {
        cout << a[i] << endl;
    }

}

 

头文件呢??

不起作用?什么意思
意思是输入之后没有反应吗?