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