1. 程式人生 > 實用技巧 >【C】Re11 剩下的筆記

【C】Re11 剩下的筆記

關於字元常量問題:

#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; }