【C】Re11 剩下的筆記
阿新 • • 發佈:2020-11-15
關於字元常量問題:
#include <stdio.h> #include <stdlib.h> #include <string.h> void string01 () { char * string1 = "Hello C language"; printf("%s\n", string1); // string1[2] = 'A'; 修改無效 printf("%s\n", string1); char string2[] = "Hello C language"; // 字元陣列 printf("%s\n", string2); string2[2] = 'A'; printf("%s\n", string2); } int main() { string01(); return 0; }
糾正陣列排序的函式封裝,搞懂原因:
#include <stdio.h> #include <stdlib.h> #include <string.h> // 選擇法排序 void selectSorting() { // 樣例陣列 int array[] = {1, 10, 8, 5, 9, 3, 6, 4, 2, 7}; const int SIZE = sizeof(array) / sizeof(*array); // sizeof(array[0]) \ sizeof(int) for (int i = 0; i < SIZE; ++i) { printf("[%d]\t", array[i]); } printf("\n - - - - - - - - - - -\n"); // ----------------------------------------------- int temp; for (int j = 0; j < SIZE - 1; ++j) {for (int i = j + 1; i < SIZE; ++i) { if (array[j] > array[i]) { // swap temp = array[j]; array[j] = array[i]; array[i] = temp; } } } for (int i = 0; i < SIZE; ++i) { printf("[%d]\t", array[i]); } printf("\n"); } // 封裝的函式 void selectSorting2(int * array, int size) { // 轉換為指標之後無法獲取陣列的個數資訊, 只能用形參注入進來 int temp; // 臨時變數 交換用 for (int i = 0; i < size - 1; ++i) { for (int j = i + 1; j < size; ++j) { if (array[i] > array[j]) { temp = array[i]; array[i] = array[j]; array[j] = temp; } } } } void printArray(int * array, int size) { printf("["); for (int i = 0; i < size; ++i) { if (i == size - 1) { printf("%d]", array[i]); break; } printf("%d,", array[i]); } printf("\n"); } void test() { int array[] = {1, 10, 8, 5, 9, 3, 6, 4, 2, 7}; const int SIZE = sizeof(array) / sizeof(*array); printArray(array, SIZE); selectSorting2(array, SIZE); printArray(array, SIZE); } int main() { // selectSorting(); // test(); return 0; }