
C/C++
文章平均质量分 59
xhh22900
upgrading
展开
-
静态库与动态库
参考C++静态库与动态库。文章目录静态库实例(`linux`下)动态库库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种,分别是静态库和动态库。它们的区别是在编译程序的链接阶段。静态库后缀为.a或.lib,它与汇编生成的目标文件一起链接为可执行文件。一个静态库可以看做一组目标文件(.o,.obj)的集合。特点如下:对函数库的链接放在编译时期完成。程序运行时与函数库无关,移植方便。占用较大的空间和资源。实例(linux下)xhhmath.h(头文件)#pragma o原创 2021-06-30 21:51:10 · 124 阅读 · 0 评论 -
fortran用MKL库求对称矩阵本征问题
这里写自定义目录标题安装oneAPI(Intel Fortran编译器)尝试MKL库FortranC++安装oneAPI(Intel Fortran编译器)Intel oneAPI Base ToolkitIntel oneAPI HPC Toolkit可以选择下载安装或者在线安装,下载的话需要用教育邮箱登陆。尝试MKL库参考官方文档Symmetric Eigenproblems。比如:Fortranprogram main implicit none integer*4,原创 2021-05-26 20:47:01 · 919 阅读 · 1 评论 -
C语言指针的奇妙用法
C语言的指针也算是一大特色了,C语言一方面有一套完整的语法规则,变量必须明确声明,常量、变量、字面量都要区分,函数返回值要与声明一致等,另一方面,C语言又给予开发者很大的自由,甚至数组不会检查越界,比较自由的是指针可以指向任意数据类型,可以指向结构和函数。指针这个东西扩展空间是很大的。有意思的是指向void的指针可以转换为指向任意类型的指针,这个规则是很好用的。下面是我发现的几个有意思的指针用法。返回值为指向函数的指针的函数一个函数指针作为另一个函数的参数不稀奇,但一个函数的返回值为一个函数指针感觉还是原创 2020-09-07 20:36:22 · 372 阅读 · 0 评论 -
C语言学习(十二)C预处理器和C库
参考书:《C Primer Plus》第六版C预处理器在程序执行之前查看程序,根据程序中的预处理器指令,把符号缩写替换成其表示的内容。基本上它的工作是把一些文本转换成另一些文本。1. 翻译程序的第一步预处理之前,编译器必须对程序做一些翻译处理。首先编译器把源码中出现的字符映射到源字符集。然后编译器定位每个斜杠后面跟着换行符的实例,并删除它们。再然后编译器把文本划分成预处理记号序列、空白序列和注释序列。编译器会将一个空格字符替换每一条注释。它会用一个空格替换所有的空白字符序列。最后,程序已经准原创 2020-08-30 16:08:07 · 595 阅读 · 0 评论 -
C语言学习(十一)位操作
参考书:《C Primer Plus》第六版–1. 二进制数、位和字节,按位运算符按位运算符二进制反码或按位取反:~按位与:&按位或:|按位异或:^掩码按位与运算通常用于掩码。用掩码如:flags = flags & mask;常见用法是ch &=0xff;0xff的二进制形式为11111111,八进制形式为0377。这个掩码保持ch中的后8为不变,其他位设为0。按位或运算用于打开位。flags|=MASK;关闭位如:flags&=~原创 2020-08-29 14:17:48 · 404 阅读 · 0 评论 -
C语言学习(十)结构和其他数据形式
参考书:《C Primer Plus》第六版文章目录1. 建立结构声明2. 定义结构变量3. 结构数组4. 嵌套结构5. 指向结构的指针6. 向函数传递结构的信息复合字面量伸缩型数组成员匿名结构7. 将结构内容保存在文件中8. 链式结构9 联合简介10. 枚举类型11. typedef 简介12. 函数和指针13. 编程练习1. 建立结构声明如下struct book{ char title[MAXTITL]; char author[MAXTITL]; float value;};后原创 2020-08-28 17:40:49 · 334 阅读 · 0 评论 -
C语言学习(九)文件输入/输出
参考书:《C Primer Plus》第六版文章目录1. 与文件进行通信2. 标准I/O3. 一个简单的文件压缩程序4. 文件I/O:fprintf()、fscanf()、fgets()和fputs()5. 随机访问: fseek()和ftell()6. 编程练习1. 与文件进行通信文件通常是在磁盘或固态硬盘上的一段已命名的存储区。C提供两种文件模式:文本模式和二进制模式。所有文件的内容都是以二进制形式存储,但如果文件最初使用二进制编码的字符(如ASCII或Unicode)表示文本,该文件就是文原创 2020-08-27 17:16:41 · 632 阅读 · 0 评论 -
C语言学习(八)存储类别、链接和存储管理
参考书:《C Primer Plus》第六版1. 存储类别作用域块作用域(如循环、判断语句)、函数作用域(用于goto语句的标签)、函数原型作用域、文件作用域(全局变量)。链接C变量有3中链接属性:外部链接、内部链接、无链接。具有块作用域、函数原型作用域或函数作用域的变量都是无链接变量。具有文件作用域的变量可以是外部链接或内部链接。外部链接变量可以在文件中使用,内部链接变量只能在一个翻译单元中使用。判断文件作用域变量是外部作用域还是内部作用域可以看变量定义时是否使用了关键字static。in原创 2020-08-27 10:12:11 · 852 阅读 · 0 评论 -
C语言学习(七)字符串和字符串函数
参考书:《C Primer Plus》第六版1. 表示字符串和字符串I/O首先看一下程序清单1:#include <stdio.h>int main(void){ char words[81]="I am a string in an array."; const char *p1="Something is pointing at me."; puts("Here are some strings :"); puts("I am a symbolic原创 2020-08-26 17:39:32 · 526 阅读 · 0 评论 -
C语言学习(六)函数、数组和指针
参考书:《C Primer Plus》第六版文章目录函数数组和指针1. 数组2. 多维数组3. 指针和数组4. 函数、数组和指针5. 指针操作6. 保护数组中的数据7. 指针和多维数组8. 变长数组(VLA)9. 复合字面值10. 练习函数直接做练习。函数这部分内容基本不用介绍。设计应给函数min(x,y)返回两个double类型值的较小值并测试。#include<stdio.h>double min(double x,double y){ return x<y?x:原创 2020-08-18 21:51:57 · 575 阅读 · 0 评论 -
C语言学习(五)字符输入、输出和输入验证
参考书:《C Primer Plus》第六版文章目录1. 单字符I/O,缓冲区2.结束键盘输入3. 重定向和文件重定向输入重定向输出组合重定向4. 创建更友好的用户界面5. 练习1. 单字符I/O,缓冲区首先可以看一下程序清单1:#include<stdio.h>int main(void){ char ch; while((ch=getchar())!='#') putchar(ch); return 0;}运行,然后我们再控制台任意输出一些字符,中间穿插#字符可以原创 2020-08-15 15:41:33 · 1951 阅读 · 0 评论 -
C++primer-学习心得-15-面向对象程序设计
文章目录C++primer-学习心得-15-面向对象程序设计15.1 OOP概述继承动态绑定15.2 定义基类和派生类1.定义基类2.定义派生类3.类型转换与继承15.3 虚函数15.4 抽象基类15.5 访问控制与继承15.6 继承中的类作用域15.7 构造函数与拷贝控制15.7.1 虚析构函数15.7.2 合成拷贝控制和赋值15.7.3 派生类的拷贝控制成员15.7.4 继承的构造函数15.8 容器与继承15.9 文本查询程序再探C++primer-学习心得-15-面向对象程序设计15.1 OOP概原创 2020-08-08 19:53:53 · 360 阅读 · 0 评论 -
二叉树、霍夫曼编码和红黑树的C++实现
主要参考:《数据结构与算法/leetcode/lintcode题解》、《算法导论》4. 二叉树参考:《算法导论》二叉树每个节点有最多两个子树,子树有左右之分,可以实现二叉查找树和二叉堆。二叉树有个规律,如果一颗二叉树的终端节点数为n0n_0n0,度为2的节点数为n2n_2n2,则有n0=n2+1n_0=n_2+1n0=n2+1。二叉树的遍历通常有三个步骤:对当前节点进行操作、遍历左边子节点、遍历右边子节点。访问节点的不同顺序形成了不同的遍历方式。树的遍历通常是用递归的思想来理解和实现的。遍原创 2020-08-04 19:21:54 · 279 阅读 · 0 评论 -
C语言学习(四)C控制语句:循环、分支和跳转
参考书:《C Primer Plus》第六版for循环。程序清单1。出口条件循环:do while。程序清单2。关系运算符的优先级比算术运算符低,关系运算符的优先级比赋值运算符高。注意:使用数组时,c编译器不会检查数组的下标是否正确,这里可能会导致潜在的异常。if else语句。程序清单3。ctype.c头文件中包含一些专门处理字符的函数的原型,这些函数接受一个字符作为参数,返回一个数值,如isalpha()函数如果输入参数是一个字母则返回非零值。函数名原创 2020-07-26 01:57:10 · 574 阅读 · 0 评论 -
C语言学习(三)运算符、表达式和语句
参考书:《C Primer Plus》第六版while循环,程序清单1。基本运算符有:赋值运算符=、加法运算符+、减法运算符-、乘法运算符*、除法运算符/,每个运算符都有自己的优先级。其它的运算符,比较常见的有:sizeof运算符、求模运算符%、递增运算符++、递减运算符--。一些基本概念:副作用:对数据对象或文件的修改;序列点:程序执行的点,在该点上,所有的副作用都在进入下一步之前发生。复合语句:用花括号括起来的一条或多条语句,也称为块。基本的类型转化规则:1)当类型转换出现在表达式时,无论是原创 2020-07-16 01:57:41 · 292 阅读 · 0 评论 -
C语言学习(二)字符串和格式化输入、输出
参考书:《C Primer Plus》第六版C语言没有专门用来存储字符串的变量类型,字符串被存储在变量类型的数组中。该数组末尾位置的字符为空字符\0,C语言用它来标记字符串的结束。空字符是非打印字符,ASCII码值是0。用%s来告诉printf()打印一个字符串。scanf()在遇到第一个空白(空格、制表符、换行符)时就不再读取输入。其它输入函数如fgets()用于读取一般字符串。(程序清单1)注:在VS中,由于scanf()函数不安全,现在引进不允许使用了,取而代之的是scanf_s()函数原创 2020-07-13 02:24:39 · 814 阅读 · 0 评论 -
C++primer-学习心得-14-重载运算与类型转换
文章目录C++primer-学习心得-14-重载运算与类型转换14.1 基本概念练习14.2,14.6,14.9,14.20,14.21,14.2214.2 输入和输出运算符14.3 算术和关系运算符14.4 赋值运算符14.5下标运算符14.6 递增和递减运算符14.7成员访问运算符14.8 函数调用运算符练习14.34练习14.35练习14.361.lambda是函数对象2.标准库定义的函数对...原创 2020-03-01 10:51:47 · 192 阅读 · 0 评论 -
C++primer-学习心得-第13章-拷贝控制
文章目录C++primer-学习心得-第三部分-类设计者的工具第13章-拷贝控制13.1 拷贝、赋值与销毁1. 拷贝构造函数练习13.52.拷贝赋值运算符练习13.83.析构函数练习13.114.三/五法则5.使用=default6.阻止拷贝练习13.1813.2 拷贝控制和资源管理练习10.221. 行为像值的类2.定义行为像指针的类13.3 交换操作13.3013.5 动态内存管理类13.6 ...原创 2020-02-29 16:37:23 · 361 阅读 · 0 评论 -
C++primer-学习心得-第12章-动态内存
文章目录C++primer-学习心得-第12章-动态内存12.1 动态内存与智能指针1.shared_ptr类练习12.22.直接管理内存练习12.6练习12.73.shared_ptr和new结合使用4. 智能指针和异常5. unique_ptr6.weak_ptr练习12.2012.2 动态数组1.new和数组练习12.23练习12.242. allocator类12.3使用标准库:文本查询程...原创 2020-02-27 20:33:14 · 512 阅读 · 0 评论 -
C++primer-学习心得-第11章-关联容器
文章目录C++primer-学习心得-第11章-关联容器11.1 使用关联容器练习11.411.2 关联容器概述1. 定义关联容器练习11.7练习11.82. 关键字类型的要求3.pair类型练习11.12练习11.13练习11.1411.3 关联容器操作1.关联容器迭代器2.添加元素练习11.203.删除元素4.map的下标操作5. 访问元素练习11.326. 一个单词转换的map11.4 无序...原创 2020-02-26 14:11:27 · 240 阅读 · 0 评论 -
C++primer-学习心得-第十章-泛型算法
文章目录C++primer-学习心得-第十章-泛型算法10.1 概述练习10.1练习10.210.2 初识泛型算法1. 只读算法练习10.32.写容器元素的算法练习10.63.重排容器元素的算法练习10.910.3定制操作1.向算法传递函数练习10.11练习10.12练习10.132.lambda表达式练习10.14练习10.15练习10.17练习10.18练习10.193.lambda的捕获和返...原创 2020-02-25 19:11:33 · 442 阅读 · 3 评论 -
C++primer-学习心得-第九章-顺序容器
文章目录C++primer-学习心得-第九章-顺序容器9.1 顺序容器概述9.2 容器库概览1. 迭代器练习9.42. 容器类型成员3.begin和end成员4.容器定义和初始化5. 赋值和swap6. 容器大小操作9.3 顺序容器操作1.添加元素练习9.18练习9.19练习9.202.访问元素3.删除元素练习9.264.特殊的forward_list操作练习9.27练习9.285.改变容器大小...原创 2020-02-23 22:58:33 · 332 阅读 · 0 评论 -
C++primer-学习心得-第二部分-第八章-IO库
文章目录C++primer-学习心得-<第二部分>-第八章-IO库8. Io库8.1 IO类1.IO对象无法拷贝或赋值2. 条件状态3.管理输出缓冲8.2 文件输入输出1.使用文件流对象2. 文件模式8.3 string流1. 使用istringstream2. 使用ostringstreamC++primer-学习心得-<第二部分>-第八章-IO库终于进入到这本书的...原创 2020-02-22 19:07:26 · 303 阅读 · 0 评论 -
C++primer学习心得-第七章-类
文章目录C++primer学习心得-第七章-类7.1 定义抽象数据类型1.设计Sales_data类2.定义Sales_data类3. 定义类相关的非成员函数4. 构造函数5. 拷贝、赋值、析构7.2 访问控制与封装1. 友元7.3 类的其他特性1.类成员再探2.返回*this的成员函数3. 类类型4. 友元再探7.4 类的作用域1.名字查找与类的作用域7.5 构造函数再探1.构造函数初始值列表2...原创 2020-02-21 21:34:30 · 268 阅读 · 0 评论 -
C++primer学习心得 -第六章 -函数
文章目录C++primer学习心得 -第六章 -函数6.1 函数基础形参和实参1.局部对象局部静态对象2.函数声明3.分离式编译6.2参数传递const 形参和实参数组形参含有可变形参的函数6.3 返回类型和return语句递归返回数组指针使用尾置返回类型6.4函数重载6.5 特殊用途语言特性1. 默认实参2.内联(inline)函数和constexpr函数constexpr函数3.调试帮助6.7...原创 2020-02-20 22:06:00 · 400 阅读 · 0 评论 -
C++primer-学习心得-第五章-语句
文章目录c++primer-第五章-语句5.1 简单语句5.2 语句作用域5.3 条件语句1. if语句2. switch语句5.4迭代语句1.while语句2. 传统for语句3.范围for语句4.do while语句5.跳转语句6. try语句块和异常处理1. try语句块2. 标准异常c++primer-第五章-语句5.1 简单语句需要注意的是不要漏写分号也不要多写分号。5.2 语句...原创 2020-02-20 13:34:02 · 222 阅读 · 0 评论 -
C++primer学习心得-第四章-表达式
文章目录C++primer学习心得-第四章-表达式4.1 基础1. 基本概念2. 优先级和结合律4.2 算术运算符4.3 逻辑和关系运算符4.4 赋值运算符4.5 递增和递减运算符4.6 成员访问运算符4.7条件运算符4.8 位运算符4.9 sizeof运算符4.10 逗号运算符4.11类型转换1. 算术转换2.显示转换C++primer学习心得-第四章-表达式4.1 基础1. 基本概念...原创 2020-02-19 23:35:28 · 145 阅读 · 0 评论 -
C++primer学习心得-第三章-字符串、向量和数组
文章目录c++primer学习心得-第三章-字符串、向量和数组3.1 命名空间的using声明3.2 标准库类型string1. 初始化string2. string对象上的操作3.处理string对象中的字符3.3 标准库类型vector1. 定义和初始话vector2.向vector中添加元素3. 其他vector操作4.迭代器(iterator)1.使用迭代器迭代器类型2.迭代器运算5. 数...原创 2020-02-19 17:29:23 · 330 阅读 · 0 评论 -
C++primer学习心得-第二章 -变量和基本类型
C++primer学习心得-第二章文章目录C++primer学习心得-第二章2.1 基本内置类型(包括算术类型(arithmetic)和空类型(void))1. 算术类型2. 类型转换3. 字面值常量2.2 变量1. 变量的定义2. 变量声明和定义的关系3. 标识符4. 作用域(scope)2.3 复合类型1. 引用(reference)2. 指针(pointer)2.4 const限定符1....原创 2020-02-18 19:50:13 · 293 阅读 · 0 评论 -
C++primer 学习心得-第一章-开始
文章目录第一章 开始1. 书店问题2. 编写一个简单的c++程序1. 编译运行2. 输入输出3. 注释简介4. 控制流3. 读取不确定数量的输出语句4. if语句5. 类简介第一章 开始1. 书店问题首先注意这个问题(书中好几章都会涉及),书店保存销售记录,每条销售记录包含三个数据项:书的ISBN号,销售的册数,书的单价。有时书店老板需要查询档案获取一些信息:每本书的销售量、销售额、平均...原创 2020-02-17 23:30:22 · 259 阅读 · 0 评论 -
C语言学习(一)数据类型
参考书:《C Primer Plus》第六版知识点:printf("My favorite number is %d beacuse it is first.\n",num); ,其中%告诉程序把一个变量在这个位置输出,d 告诉程序将输出一个十进制整数变量。数据类型关键字:最初K&R给出的关键字:int、long、short、unsigned、char、float、double,C90标准添加的关键字:signed、void,C99标准添加的关键字:_Bool(布尔值)、_Complex原创 2020-07-10 00:25:38 · 1907 阅读 · 0 评论