关于字符常量问题:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void string01 () {
char * string1 = "Hello C language";
printf("%s
", string1);
// string1[2] = 'A'; 修改无效
printf("%s
", string1);
char string2[] = "Hello C language"; // 字符数组
printf("%s
", string2);
string2[2] = 'A';
printf("%s
", 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] ", array[i]);
}
printf("
- - - - - - - - - - -
");
// -----------------------------------------------
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] ", array[i]);
}
printf("
");
}
// 封装的函数
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("
");
}
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;
}