![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
xiaoyaolangwj
凡读必记
展开
-
C/C++ 中 volatile 关键字详解
而且读取的数据立刻被保存。在此段代码中,nMyCounter 的拷贝可能存放到某个寄存器中(循环中,对 nMyCounter 的测试及操作总是对此寄存器中的值进行),但是另外又有段代码执行了这样的操作:nMyCounter -= 1;//等待上面的线程终止,如果bStop不使用volatile申明,那么这个循环将是一个死循环,因为bStop已经读取到了寄存器中,寄存器中bStop的值永远不会变成FALSE,加上volatile,程序在执行时,每次均从内存中读出bStop的值,就不会死循环了。原创 2023-06-26 14:49:54 · 390 阅读 · 0 评论 -
C语言数据结构八:排序算法:冒泡排序;选择排序;插入排序;
排序算法;冒泡排序,选择排序,插入排序。原创 2023-03-14 16:39:13 · 69 阅读 · 0 评论 -
C语言数据结构七:二叉树非递归遍历
因为引入bool量,所以引用:<stdbool.h>必须采用栈的这种先进后出的特性。初始化根节点:返回根节点,然后输入为。我们继续采用前面是用的栈的代码。节点结构体:除了节点,还需要一个。二叉树的非递归遍历,必须借助。原创 2023-03-14 16:08:04 · 792 阅读 · 0 评论 -
C语言数据结构六:树。二叉树遍历。先序遍历,中序遍历,后序遍历。二叉树叶节点数,二叉树高度,二叉树拷贝;二叉树释放。
(二叉)树中,一个节点,你也要把他看做成树。子树。一个节点都没有叫做空树。所以说:树具有递归性。树是非线性结构,有一个,但是可能有很多。树中,应用最多的还是二叉树。原创 2023-03-14 14:38:50 · 385 阅读 · 0 评论 -
C语言数据结构五:队列
C语言数据结构五:队列的链式存储原创 2023-03-14 10:52:20 · 198 阅读 · 0 评论 -
C语言数据结构四:栈的应用案例——就近匹配
栈的应用案例——就近匹配:左右符号匹配检查应用。原创 2023-03-14 09:16:18 · 134 阅读 · 0 评论 -
C语言数据结构四:栈的链式存储
栈的链式存储原创 2023-03-14 09:00:05 · 120 阅读 · 0 评论 -
C语言数据结构三:栈的顺序存储
栈的顺序存储原创 2023-03-13 22:27:29 · 148 阅读 · 0 评论 -
C语言数据结构二:单向链表
单向链表原创 2023-03-13 20:22:45 · 578 阅读 · 0 评论 -
C语言数据结构一:动态数组
C语言数据结构一:动态数组;可插值,可删除,可动态拓展容量。原创 2023-03-13 11:39:49 · 5292 阅读 · 0 评论 -
大文件拷贝
大文件拷贝;逐字节;逐行;逐块;写入控制;按照文件状态来开辟空间控制读写。原创 2023-02-21 23:59:18 · 202 阅读 · 0 评论 -
大数据排序;冒泡排序优化方案
写入文件,大数据排序;冒泡排序优化原创 2023-02-19 12:41:01 · 143 阅读 · 0 评论 -
C语言格式化输入和输出; Format格式化
字符串拼接与分割(含中文);Format格式化;字符格式化;字符串格式化文件读写;四则运算文件版原创 2023-02-16 20:20:25 · 3772 阅读 · 0 评论 -
结构体内存对齐;内存优化
内存对齐;内存优化。原创 2023-02-03 16:06:19 · 702 阅读 · 0 评论 -
C语言中内存空间释放时机与函数返回值
内存空间释放时机与函数返回值原创 2023-02-03 09:27:23 · 762 阅读 · 0 评论 -
【转载】原码、反码和补码;位运算
原码、反码、补码。位操作符转载 2023-01-13 12:02:28 · 156 阅读 · 0 评论 -
CMake入门(一)Ubuntu下使用和Window下使用
CMake跑起来。原创 2022-09-10 23:42:30 · 1218 阅读 · 0 评论 -
C++核心编程:内存分区模型
C++程序在执行时,将内存大方向划分为4个区域:代码区:存放函数体的二进制代码,由操作系统进行管理的。 全局区:存放全局变量和静态变量以及常量。 栈区:由编译器自动分配和释放,存放函数的参数值,局部变量等。 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。内存四区的意义:不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程。程序运行前:(全局区)在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域:代码区:存放CPU执行的机原创 2022-01-09 14:51:58 · 510 阅读 · 0 评论 -
手写一个Mystrcat
Mystrcat原创 2022-08-20 17:06:08 · 99 阅读 · 0 评论 -
手写一个自己的mystrstr
自己实现strstr功能。原创 2022-08-19 23:02:00 · 303 阅读 · 0 评论 -
C语言【空字符】和【空指针】
空字符是一个字符,占1字节;而空指针是一个地址,通常占4字节。原创 2022-08-14 11:36:43 · 2310 阅读 · 0 评论 -
C语言字符串中【数组形式】和【指针形式】不同之处
初始化数组把静态存储区的字符串拷贝到数组中,而初始化指针只把字符串的地址拷贝给指针。原创 2022-08-13 23:42:56 · 521 阅读 · 0 评论 -
【特别注意事项】C语言解引用未初始化的指针
千万不要解引用未初始化的指针。原创 2022-08-11 23:46:08 · 735 阅读 · 0 评论 -
C语言指针数组和二级指针
void test0701(){ int a = 10; int b = 20; int c = 30; int* arr[] = { &a, &b, &c }; *arr[1] = 200; printf("a=%d\n", a); printf("b=%d\n", b); printf("c=%d\n", c);}void test0702(){ // 二级指针 char* arr[] = { "hello", "world", "ni..原创 2022-04-20 14:48:47 · 846 阅读 · 0 评论 -
C语言指针操作访问控制数组
#include<stdio.h>void test0601(){ int a[] = { 1, 2,3 ,4,5,6 }; int* p = a; int len = sizeof(a) / sizeof(a[0]); printf("通过指针来操作访问数组元素。\n"); for (int i = 0; i < len; i++) { printf("%d\n", p[i]); } for (int i = 0; i < len; i++) { .原创 2022-04-20 14:20:16 · 904 阅读 · 0 评论 -
C语言指针实现strchr功能:字符查询
#include<stdio.h>#include<string.h>void test0401(){ char str[] = "Hello world"; char a = 'o'; char* p = strchr(str, a); printf("%s\n", p);}char* myStrChr(const char* arr, char ch){ char* ptr = arr; printf("此时ptr指向内容为:%s\n", ptr);.原创 2022-04-20 12:10:56 · 774 阅读 · 0 评论 -
C语言指针实现冒泡排序
#include<stdio.h>void test0301(){ int arr[5] = { 1, 2, 3, 4, 5 }; int* p = arr; printf("sizeof(arr) = %d\n", sizeof(arr)); printf("sizeof(p) = %d\n", sizeof(p));}void MyBubbleSort(int* p, int len){ for (int i = 0; i < len - 1; i++) {.原创 2022-04-20 12:07:15 · 5384 阅读 · 0 评论 -
C语言指针实现字符串逆序反转
#include<stdio.h>#include<string.h>void rec(char* arr){ //int len = sizeof(arr); // 判断字符串长度需要用strlen。 int len = strlen(arr); printf("字符串长度len = %d\n", len); char* p1 = arr; char* p2 = &arr[len - 1]; while (p1 < p2) { char.原创 2022-04-20 11:51:19 · 3379 阅读 · 0 评论 -
C语言与C++语言的一个区别:指针修改const变量
先上代码:const int a = 10;printf("a = %d\n", a);int* p = &a;*p = 100;printf("a = %d\n", a);这段代码在C语言中,可以正常运行。在C++中,会被告知int* p = &a;报错:const int *" 类型的值不能用于初始化 "int *" 类型的实体这段代码运行在以.c结尾的文件中可以通过,.cpp文件无法通过。结论:C语言允许通过指针修改const修饰的变量值。 C原创 2022-04-19 11:33:56 · 323 阅读 · 0 评论 -
C语言字符串分割实例
void strtokTest(){ char a[100] = "abc def hig aaa bbb"; char* s = strtok(a, " "); while (s != NULL) { printf("%s\n", s); Sleep(500); s = strtok(NULL, " "); }}注意事项:在第一次调用时:strtok()必需给予参数s字符串。 往后的调用则将参数s设置成NULL,每次调用成功则返回指向被分割出片段的指针。头部文件.原创 2022-04-12 21:56:55 · 1820 阅读 · 0 评论 -
Run-Time Check Failure #2 - Stack around the variable ‘str‘ was corrupted.
先上代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>int main(void){ //zifuchuan(); char str[5]; // 接收的字节数必须尽量超过预计的长度,否则会报错。 printf("input string1: \n"); int a = scanf("%s ", str); prin原创 2022-04-07 16:17:20 · 1627 阅读 · 0 评论