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