數組的認識

數組的認識

#include <stdio.h>
#include <string.h>
int main()
{
    int arr[10] = { 1,2,3 };
    char arr2[5];
    char arr3[] = { 'a','b','c' };
    printf("%d\n", strlen(arr));
    printf("%d\n", strlen(arr2));
    printf("%d\n", strlen(arr3));

    return 0;
}

對於數組有一個簡單的認識,用sizeof就能獲得數組所佔的字節大小了,srelen是沒法獲得正確的數據的,由於strlen函數遇到‘\0’字符纔會終止計數,因此在遇到一個隨機值爲‘\0’時纔會終止計數。數組

冒泡排序法

#include <stdio.h>
void bubble_sort(int arr[],int sz)
{
    int i = 0;
    int j = 0;
    int flag = 1;
    for (i = 0; i < sz-1; i++)
    {
        for (j = 0; j < sz -1 -i; j++)
        {
            if (arr[j] > arr[j+1])
            {
                arr[j] = arr[j]^ arr[j+1];
                arr[j+1] = arr[j]^ arr[j+1];
                arr[j] = arr[j]^ arr[j+1];
                flag = 0;
            }
        }
        if (flag == 1)
        {
            break;
        }
    }

    for (i = 0; i < sz; i++)
    {
        printf("%d  ", arr[i]);
    }
}
int main()
{
    int arr[] = { 10,9,8,7,4,5,6,3,2,1 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    bubble_sort(arr,sz);
    return 0;
}

對於數組的初始化和打印有了必定的認識,對冒泡法有了更深的理解。另外還有就是,無論是一維數組仍是二維數組,在內存中的排列都是順序排列,每個元素佔對應類型的字節長度,在內存中的地址連續。ide

數組名的理解

#include <stdio.h>
int main()
{
    int arr[] = { 1,2,3,4,5,7,8 };
    printf("%p\n", arr);
    printf("%p\n", arr+1);
    printf("%p\n", &arr[0]);
    printf("%p\n", &arr[0]+1);
    printf("%p\n", &arr);
    printf("%p\n", &arr+1);
    printf("%d\n", sizeof(arr));
    return 0;
}
//sizeof(數組名),計算整個數組的大小,sizeof內部放一個數組名,數組名錶示的是整個數組
//&數組名,數組名錶示的是整個數組,&數組名,取出來的是整個數組的地址。
//除了以上兩個鍾狀況外,數組名只表明首元素地址。

以上代碼能很好的表明數組名在不一樣的狀況下有什麼樣的含義,函數調用之中也只是往函數裏傳送了一個地址,存爲一個指針,在冒泡排序的那裏就有很好的體現,由於第一次就寫錯了,沒法實現目的,也沒法在函數內部計算數組元素個數。
今天的內容比較簡單,連續的學習,偶爾也會想稍微慢一點,明天就能作出三子棋和部分掃雷的實現,還挺激動。。函數

相關文章
相關標籤/搜索