C語言數組(下)

寫一個冒泡排序的函數,代碼如下:

void bubble_sort(int arr[],int sz)
{
    //確定冒泡排序的函數
    int i = 0;
    for ( i = 0; i < sz - 1; i++)
    {
        int flag = 1;//假設這一趟要排序的數值已經有序
        //每一趟冒泡排序
        int j = 0;
        for ( j = 0; j < sz - 1 -i; j++)
        {
            if (arr[j]>arr[j + 1])
            {
                int tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
                flag = 0;//本趟排序的數據其實不完全有序
            }
        }
        if (flag == 1)
        {
            break;
        }

    }
}
int main()
{
    int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
    int i = 0;
    int sz = sizeof(arr) / sizeof(arr[0]);
    //對arr進行排序,排成升序
    //arr是數組,我們對數組arr進行傳參,實際上傳遞過去的是數組arr首元素的地址 &arr[0]
    bubble_sort(arr,sz);//冒泡排序函數
    for ( i = 0; i < sz; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

其中要注意的是,arr是數組,我們對數組arr進行傳參,實際上傳遞過去的是數組arr首元素的地址 &arr[0],如果想求數組的元素個數就要先在外面求好再傳參進去。


數組名數組首元素的地址。(有兩個例外)
1.sizeof(數組名) - 數組名錶示整個數組,sizeof(數組名)計算的是整個數組的大小,單位是字節。
2.&數組名,數組名代表整個數組,&數組名,取出的是整個數組的地址。


總結:
要區分我們傳的是首元素的地址還是整個數組的地址,這兩個的意義是不一樣的。
2021.1.27
永遠相傻瓜計算機


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章