随笔分类 -  课程 / 程序设计C

摘要:1.首先回忆结构体 我们都知道定义一个结构体可以这样的方式定义: struct Point { float x; float y; } point; //等价于: struct Point point; 除此之外,如果不想声明结构体,只想定义结构体的话,还可以这样: struct { float x 阅读全文
posted @ 2023-11-09 20:42 ImreW 阅读(25) 评论(0) 推荐(0) 编辑
摘要:struct(结构体)与union(联合体)是C语言中两种不同的数据结构,两者都是常见的复合数据类型。 定义 结构体(struct) 在C语言中,结构体(struct)指的是一种数据结构,是C语言中复合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用 阅读全文
posted @ 2023-11-09 16:45 ImreW 阅读(1221) 评论(0) 推荐(0) 编辑
摘要:volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。 1.原理作用 Volatile意思是“易变的”,应该解释为“直接存取原始内存地址” 阅读全文
posted @ 2023-10-07 14:11 ImreW 阅读(21) 评论(0) 推荐(0) 编辑
摘要:浏览器阻止页面跳转 window.onbeforeunload=()=>{ return "阻止页面跳转" } 右键点击【检查】,选择【控制台】输入以上代码,回车。 实现鼠标选中复制 不登录CSDN账号,一行代码实现鼠标选中复制 这里主要利用浏览器内在特性,将请求的HTML页面所在的浏览器内的设计模 阅读全文
posted @ 2023-09-15 11:38 ImreW 阅读(162) 评论(0) 推荐(0) 编辑
摘要:(一)基础 结构体用点,结构体指针用箭头。 a->b 的含义是 (*a).b 。 现代的标准化的 C 语义上来说, -> 可以用 * 和 . 的组合实现。 简单的说,就是一个快捷方式,一个语法糖。 (二)例子 在机器码和汇编的角度来看,不存在变量,不存在 struct 这种东西,只存在寄存器和一个叫 阅读全文
posted @ 2023-05-11 10:59 ImreW 阅读(99) 评论(0) 推荐(0) 编辑
摘要:借用gcc内置函数__builtin_choose_expr和__builtin_types_compatible_p可以帮助c来实现函数重载。 首先对这两个函数功能做下介绍 __builtin_choose_expr(expr,expr1,expr2)与c语言:?运算符有些类似,如果expr表达式 阅读全文
posted @ 2023-04-10 19:50 ImreW 阅读(304) 评论(0) 推荐(0) 编辑
摘要:一、锁机制 常用的锁机制有两种:悲观锁、乐观锁 (一)悲观锁 假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。 悲观锁的实现,往往依靠底层提供的锁机制。 悲观锁会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。 (二)乐观锁 假设不会发生并发冲突,每次不加锁而是假设没有冲突而去完成某项操 阅读全文
posted @ 2023-04-07 21:56 ImreW 阅读(627) 评论(0) 推荐(0) 编辑
摘要:(一)typedef/define的基本概念 1.typedef typedef int BOOL; #define TRUE 1 #define FALSE 0 定义好之后,就可以像使用基本类型数据一样使用它了,如下面的代码所示: BOOL bflag=TRUE; 2.与define的区别 typ 阅读全文
posted @ 2023-04-05 20:03 ImreW 阅读(14) 评论(0) 推荐(0) 编辑
摘要:(一)背景 实现多线程环境下的计数器操作,统计相关事件的次数. 当然我们知道,count++这种操作不是原子的。一个自加操作,本质是分成三步的: 1 从缓存取到寄存器 2 在寄存器加1 3 存入缓存。 由于时序的因素,多个线程操作同一个全局变量,会出现问题。这也是并发编程的难点。在目前多核条件下,这 阅读全文
posted @ 2023-04-05 19:32 ImreW 阅读(322) 评论(0) 推荐(0) 编辑
摘要:(一)malloc() 说明: C 库函数 void *malloc(size_t size) 分配所需的内存空间,并返回一个指向它的指针。 原型: void *malloc( size_t size)//内存块的大小,以字节为单位。//该函数返回一个指针 ,指向已分配大小的内存。如果请求失败,则返 阅读全文
posted @ 2023-04-05 19:19 ImreW 阅读(8) 评论(0) 推荐(0) 编辑
摘要:编译器属性__attribute__用于向编译器描述特殊的标识、检查或优化. (一)基本用法 __attribute__((cleanup(...))),用于修饰一个变量,在它的作用域结束时可以自动执行一个指定的方法,如: // 指定一个cleanup方法,注意入参是所修饰变量的地址,类型要一样 / 阅读全文
posted @ 2023-04-05 19:11 ImreW 阅读(233) 评论(0) 推荐(0) 编辑
摘要:头文件:#include <stdio.h> sprintf()函数用于将格式化的数据写入字符串。 int sprintf(char *str, char * format [, argument, ...]); char *str为要写入的字符串。 char * format为格式化字符串。 ar 阅读全文
posted @ 2023-03-20 19:18 ImreW 阅读(401) 评论(0) 推荐(0) 编辑
摘要:(一)int argc argc是命令行总的参数个数 (二)const char *argv[] argv[]为保存命令行参数的字符串指针,其中第0个参数是程序的全名,以后的参数为命令行后面跟的用户输入的参数, argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址 阅读全文
posted @ 2023-03-05 18:48 ImreW 阅读(653) 评论(0) 推荐(0) 编辑
摘要:(一)介绍 函数名: exit() 所在头文件:stdlib.h 功能: 关闭所有文件,终止正在执行的进程。 exit(1)表示异常退出.这个1是返回给操作系统的。 exit(x)(x不为0)都表示异常退出 exit(0)表示正常退出 exit()的参数会被传递给一些操作系统,包括UNIX,Linu 阅读全文
posted @ 2023-03-05 18:29 ImreW 阅读(133) 评论(0) 推荐(0) 编辑
摘要:(一)说明 sscanf的作用:从一个字符串中读进于指定格式相符的数据。利用它可以从字符串中取出整数、浮点数和字符串。 sscanf和scanf的区别:scanf是以键盘作为输入源,sscanf是以字符串作为输入源。 (二)函数原型 #include <stdio.h> int sscanf( co 阅读全文
posted @ 2023-03-04 20:11 ImreW 阅读(25) 评论(0) 推荐(0) 编辑
摘要:格式控制符 说明 %c 输出一个单一的字符 %hd、%d、%ld 以十进制、有符号的形式输出 short、int、long 类型的整数 %hu、%u、%lu 以十进制、无符号的形式输出 short、int、long 类型的整数 %ho、%o、%lo 以八进制、不带前缀、无符号的形式输出 short、 阅读全文
posted @ 2023-02-26 12:38 ImreW 阅读(440) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示