冒泡排序
写在前面 冒泡排序的核心思想就是两两相邻的元素进行比较, 每完成一趟冒泡排序, 都会有一个元素放到要放的位置上. 实现 #include <stdio.h>void swap(int* a, int* b) { int tmp = *a; *a = *b; *b = tmp;}void bubble_sort(int arr[], int size) { for (int i = 0; i < size - 1; i++) { // size 个元素要排 size-1 趟 int is_order = 1; // 假设数组已经有序 for (int j = 0; j < size - 1 - i; j++) { // 每排完一趟, 待排序元素就会少一个 if (arr[j] > arr[j + 1]) { // 升序, 不满足则交换 is_order = 0;//无序 swap(&arr[j], &arr[j +...
C 语言指针详解(2)
写在前面 这里我默认你看完了 C 语言指针详解(1), 现在继续对指针进行深度剖析 1. 数组名的理解 #include <stdio.h>int main(){ int arr[5] = { 0 }; printf("%p\n", arr); printf("%p\n", &arr[0]); return 0;} 输出结果如下图: 可以看见, 数组名其实是一个地址, 而且和数组首元素的地址相同. 但是在这种情况下例外: sizeof( 数组名 ), sizeof 里面单独放一个数组名, 表示的是整个数组, 计算的是整个数组的大小 &数组名, 得到的是整个数组的地址, 是数组指针, 这个地址和数组首元素的地址相同, 但意义不同. #include <stdio.h>int main(){ int arr[5] = { 0 }; printf("arr = %p\n",...
字符串函数的模拟实现
C 语言模拟实现字符串函数
C 语言指针详解(1)
写在前面 许多 C 语言初学者觉得指针难, 谈"指"色变😐 指针是 C/C++ 里面非常重要的知识点,你对它了解多少呢?一起来了解一下吧~ 1. 内存和地址 要想深入理解指针,就得先认识内存和地址 1.1 内存 内存(Memory), 是计算机中最重要的部件之一, 它是程序与 CPU 进行沟通的桥梁. 内存又称主存, 其作用是存放CPU中的运算数据, 计算机中所有的程序的运行都是在内存中进行的. 简单来说, 你可以把内存想象成一栋宿舍楼. 在这个宿舍楼里面, 住着很多同学, 可以把电脑内存里的数据想象成这些同学. 1.2 地址 计算机内存里的数据有很多很多, CPU 要如何找到想要的数据的? 计算机把内存划分一个个内存单元, 每个内存单元的大小是 1 字节. 这些内存单元的编号就是地址. 在上面的例子中, 假如 8 个同学住一间宿舍, 这个宿舍就可以理解成内存单元, 宿舍号就可以理解成这个内存单元的地址. C 语言给地址起了一个新名字: 指针. 最后小结一下: 内存单元的编号 == 地址 == 指针 2. 指针变量和地址 2.1 取地址操作符 C...
git 的使用教程
git 如何连接 GitHub 仓库使用及常用命令