在执行c ++冒泡排序函数时,为什么不能在内部使用sizeof函数?

时间:2019-06-12 00:49:00

标签: c++

我正在尝试为数组创建Bubblesort函数。当且仅当我确定函数外部的大小(数组元素的数量)时,它才起作用。我不确定为什么它在函数内部不起作用?

这是我的代码:


void swap(int* a, int* b){

    int temp = *a;
    *a = *b;
    *b = temp;

}

void bubbleSort(int arr[], int n)
{

   for (int i = 0; i < n-1; ++i){


   for (int j = 0; j < n- i - 1; ++j){

        if(arr[j] > arr[j+1])
        swap(&arr[j], &arr[j+1]);
   }
   }
}


int main()
{

    int myarray[] = {10, 4, 8, 11, 1, 21, 3};

    int n = sizeof(myarray) / sizeof(myarray[0]);
    bubbleSort(myarray, n);

    for (int i = 0; i < (sizeof(myarray)/sizeof(myarray[0])); ++i)
        cout << myarray[i] << ", ";



    return 0;
}

如果我尝试这样做:


void bubbleSort(int arr[])
{

   int n = sizeof(arr) / sizeof(arr[0]);

   cout << n;


   for (int i = 0; i < n-1; ++i){


   for (int j = 0; j < n- i - 1; ++j){

        if(arr[j] > arr[j+1])
        swap(&arr[j], &arr[j+1]);
   }
   }
}

它计算n为2而不是7。...

不确定为什么吗?

为什么相同的数组最终会被计算为不同的大小?

我的意思是,由于没有循环,因此sizeof计算应该只发生一次。

0 个答案:

没有答案