- 博客(81)
- 资源 (4)
- 收藏
- 关注
原创 #pragma 使用分析
pragma 用于指示编译器完成一些特定的动作#pragma 所定义的很多指示字是编译器特有的#pragma 在不同的编译器间是不可移植的预处理器将忽略它不认识的#pragma指令不同的编译器可能以不同的方式解释同一条3pragma指令一般用法: #pragmaticparameter 注:不同的parameter参数语法和意义各不相同。
2023-03-27 22:48:28
145
原创 数组指针和指针数组分析
C语言中通过 typedef 为数组类型重命名 EG: typedef type(name)[size]数组类型定义int main()AINT5 a1;int i = 0;for(i=0;i<10;i<10;
2023-03-27 22:42:32
82
原创 宏定义与使用分析
define 是预处理器处理的单元实体之一#define 定义的宏可以出现在程序的任意位置#define 定义之后的代码都可以使用这个宏,也就是说宏定义没有作用域的限制#define 定义的宏常量可以直接使用#define 定义的宏常量本质为字面量下面定义的定义正确吗?test.c"答案:1和2和4是正确的,4用接续符将两行文本合起来效果同2,但是3的话宏替换后不是一个合法的字符串宏表达式被预处理器处理,编译器不知道宏表达式的存在宏表达式用"实参"完全替代形参,不进行任何运算。
2023-03-16 21:59:40
119
原创 电脑C盘深度清理
无论我们给C盘分多大的分区,Windows都有办法把它填满。像休眠文件、系统页面文件这都是动辄GB级的大文件,还有系统还原文件、虚拟内存、安装软件时的临时解压文件、系统更新和游戏更新补丁存放的位置都在C盘上。别看刚刚安装完的Windows才十几个GB,用着用着不定期清理的话,轻轻松松走掉50GB~60GB,要是再把各种软件默认丢在C盘,那百GB都挡不住。所以除了给C盘扩容,还有一个办法就是适当调节......
2022-08-26 21:00:02
85899
1
原创 pthread_cond_signal唤醒问题
#include <stdio.h>#include <fcntl.h>#include <string.h>#include <unistd.h>#include<signal.h>#include<sys/types.h>#include<pthread.h>#include<stdlib.h>pthread_mutex_t mutex;pthread_cond_t cond;void
2020-08-18 19:12:16
1189
2
原创 C(18)三目运算符和逗号表达式
文章目录1. 三目运算符2. 逗号表达式3. 总结1. 三目运算符三目运算符的返回类型是一个左值a?b:c 的返回类型通过隐式转换返回 b 和 c 中的较高类型,当 b 和 c不能隐式转换到同一类型时将编译报错EG:#include <stdio.h>int main(int argc, char *argv[]){ int a = 1; int b = 2; // (a < b ? a : b) = 3; // 报错,三目运算符返回的是左值,可以使用 *(a
2020-07-13 20:51:24
228
原创 C(16)位运算符分析
文章目录1. C语言中的位运算符2. 左移与右移3. 位运算与逻辑运算的区别4. 总结1. C语言中的位运算符位运算符名称&按位或|按位与^按位异或~取反<<左移>>右移2. 左移与右移做操作数必须为整数类型,char 和 short 被隐式转换为int后进行位操作右操作数的范围必须时 [0,31] ,超过这个范围是未定义行为,由编译器厂商决定左移运算符 << 将运算数的二进制位左移,
2020-07-13 17:36:41
1282
原创 C(15)逻辑运算符分析
文章目录1. 逻辑与和逻辑或2. 非运算符3. 总结1. 逻辑与和逻辑或|| 从左向右开始计算,当遇到为真的条件时停止计算,整个表示式为真,所有条件为假时才为假&& 从左向右开始计算,当遇到为假的条件时停止计算,整个表达式为假,所有条件为真时表达式才为真逻辑表达式中,&&比|| 具有更高的优先级,++i || ++j && ++k ==> (++i) || (++j && ++k)EG:#include <stdio
2020-07-02 16:18:27
168
原创 C(14)单引号和双引号
文章目录1. 单引号和双引号1.1 单引号和双引号的概念1.2 补充知识1.3 示例11.4 示例22. 总结1. 单引号和双引号1.1 单引号和双引号的概念C语言中的单引号用来表示字符字面量C语言中的双引号用来表示字符串字面量1.2 补充知识字符字面量被编译为对应的ASCII码字符串字面量被编译为对应的内存地址printf的第一个参数被当作字符串内存地址内存的低地址空间不能在程序中随意访问1.3 示例1#include <stdio.h>int main()
2020-06-25 10:39:28
265
原创 C(13)接续符和转义符
文章目录1. 接续符2. 转义符3. 总结1. 接续符编译器会将反斜杠提出,跟在反斜杠后面的字符自动接续到前一行在接续单词时,反斜杠之后不能有空格,反斜杠的下一行也不能有空格接续符适合在定义宏代码块的时使用EG:#include <stdio.h>#define SWAP(a,b) \{ \ int temp = a; \ a = b; \ b = temp;
2020-06-25 09:20:09
194
原创 C(12)注释符号
文章目录1. 注释讲解一2. 注释讲解二3. 总结1. 注释讲解一编译器在编译的过程中使用空格替换整个注释字符串字面量中的 // 和 /*...*/ 不代表注释符号/*...*/ 型注释不能被嵌套EG:#include <stdio.h>int main(){ int/*...*/i; char* s = "abcdefgh //hijklmn"; //Is it a \ valid comment?
2020-06-24 20:30:08
262
原创 C11(enum, sizeof, typedef 分析)
文章目录1. 枚举类型 enum2. sizeof 关键字3. typedef 关键字4. 总结1. 枚举类型 enumenum 是C语言中的一种自定义类型enum 值是可以根据需要自定义的整型值第一个定义的 enum 值默认是0默认情况下的 enum 值是在前一个定义值的基础上加1enum 类型的变量只能取定义时的离散值(虽然取其它值也没报错,但是没有意义)enum 中定义的值时 C 语言中真正意义上的常量EG:#include <stdio.h>enum{
2020-06-24 12:03:34
684
原创 C(10)struct 和 union 分析
文章目录1. struct 关键字1.1 struct 空结构体占用的内存1.2 柔性数组2. union 关键字3. 总结1. struct 关键字1.1 struct 空结构体占用的内存#include <stdio.h>struct TS{};int main(){ struct TS t1; struct TS t2; printf("sizeof(struct TS) = %d\n", sizeof(struct TS));
2020-06-22 12:38:12
252
原创 C09(const 和 volatile 分析)
文章目录1. const 只读变量1.1 标准C语言1.2 现代编译器1.3 编程实验2. const 修饰函数参数和返回值3. volatile关键字4. 总结1. const 只读变量1.1 标准C语言const 修饰的变量是只读的,本质还是变量const 修饰的局部变量在栈上分配空间const 修饰的全局变量在全局数据区分配空间const 只在编译期间有效,在运行期间无效const 修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边1.2 现代编译器对于局部
2020-06-22 12:37:12
290
原创 C08(goto 和 void 分析)
文章目录1. goto关键字2. void 关键字2.1 void 修饰函数返回值和参数2.2 C语言不存在void变量2.3 void 指针的含义3. 总结1. goto关键字在如今的项目经验中禁止使用 gotogoto 语句的使用给程序的可读性带来了麻烦,不方便维护,并且使用的时候很容易出现错误2. void 关键字2.1 void 修饰函数返回值和参数eg1:#include <stdio.h>func(){}int main(int argc, char
2020-06-21 11:57:15
341
原创 UML入门
文章目录1. 类图1.1 继承与实现1.2 关联与依赖1.3 聚合与组合2. 时序图2. 时序图1. 类图1.1 继承与实现空心三角箭头:继承或实现箭头子类指向父类实线代表类继承,虚线代表接口的继承1.2 关联与依赖实线是关联关系,被指向的类作为指向类的成员虚线是依赖关系,被指向类一般作为指向类的参数或者返回值临时使用以下1.3 聚合与组合聚合代表很多相同种类的东西聚在一起组合代表两个东西相互依赖,比如一只鸟有两个翅膀,第二幅图代表组合关系中数字的表示
2020-06-16 11:58:21
164
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人