C/C++
C/C++机制
hjx5200
这个作者很懒,什么都没留下…
展开
-
《C++ Primer Plus》学习笔记(第七章)
函数三部曲:声明、定义和应用,三位一体,缺一不可。它们内在是统一的。函数由四部分要素组成,分别是函数名,参数列表,返回值和函数体。其中前三个构成了函数原型,也即声明时需要指定的。而函数定义必须给出函数体的内容,也即需要函数执行哪些操作。函数应用,也即函数调用,是通过函数名,并给定声明中约定的参数,期待它返回正确的结果(包括类型和值)。它需要计算机“动”起来,内部执行由函数体内容经过编译后转行的程序指令序列,然后把计算结果放到约定位置,然后系统去拿并解析,返回给当前的调用函数。原创 2023-03-06 07:22:23 · 226 阅读 · 0 评论 -
字符数组作为结构的项,在new构建结构对象时无法初始化
当结构struct中包含字符数组时,通过new创建结构数组,无法初始化原创 2023-03-02 02:05:10 · 234 阅读 · 0 评论 -
cin.get()函数循环读入整行
从命令行循环读入整行字符串,然后计算输入的总字符个数。演示了cin.get()函数的用法细节。原创 2023-03-02 00:35:49 · 530 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记(第六章)
那么从文件进行读写,需要引用fstream头文件,然后构建文本输入对象ifream inFile,然后通过该对象打开文件inFile.open("filename"),然后像使用cin那样使用inFile,完成读入功能后要关闭文件inFile.close()。类似的,构建文本输出对象outFile,向磁盘写文件。分支功能主要是if-else语句和switch语句,其实它们的功能相似,都可以实现多分支操作。比较有新意的是,本章中提到字符库函数cctype,有很多函数用来判断当前字符是数字/字符还是大小等等。原创 2023-02-28 19:07:27 · 97 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记(第五章)
介绍了循环语句,for、while和do-while,其中for和while是入口条件循环语句,而do-while是出口条件循环语句。它们之间的差别是何时进行判断表达式求值,然后执行循环体语句。还介绍了C++11新引入的for循环特性如:for(double x : prices),其中prices是double类型数组。嵌套循环和二维数组的概念,是在单层循环和一维数组基础的扩展,不难理解。但处理起来需要细心。还介绍了C++编程其他方面的概念,如语句块(复合语句)、关系表达等,与循环相关的。原创 2023-02-27 19:13:20 · 89 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记(第四章下)
只知道地址,然后去访问那个字节空间,没有问题,但是我们的存储对象,根据类型的不同,往往占用多个字节。这就要求在定义指针时必须声明该指针指向的类型,是int、double、还是某个结构类型,甚至是它们的组合,如果int数组。函数指针,比如:int (*f)(int, int),表明f是一个指向形参为两个int型,返回值也是int的函数。除了数组外,还介绍了vector,它是动态分配空间的,可以在运行时决定存储对象的长度。静态区的生命周期是和程序一样的,而堆上存储的对象的生命周期,是由程序员控制的。原创 2023-02-24 12:50:19 · 66 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记(第四章上)
第四章介绍了多个元素的组合,构成新的复合类型。这里又分为该组合中的元素是否为同类型,以及元素是否可变及是否同时占用空间,出现了数组(array)、结构(struct)、共同体(union)和枚举(enum)等不同复合类型。不同场景下,根据需要选择不同的组合。原创 2023-02-23 02:24:35 · 191 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记(第三章)
变量初始化,支持花括号,对一般基本类型变量也一样。因此,养成习惯,对内置类型的变量,其初始也通过这样的方式,以与将来介绍的类对象初始保持一致。强制类型转换的格式:typeName (value),如将double类型3.0转换为int型,a = int (b)结果为3,作为整型赋值给变量a,变量b的值不变。C++里引入bool型,因此应尽可能明确的定义bool变量,来接收逻辑判断的值。在需要做逻辑判断而该变量或函数返回值不是bool型时,应通过显示的强制类型转换,以避免隐式转换带来不必要的麻烦。原创 2023-02-21 20:33:46 · 61 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记(第二章)
函数定义,一般放在单独的.cpp文件中,或main函数之后。最后,一般有个返回语句。变量声明时,编译器为该变量分配内存空间,相当于调用了对应类型的构造函数,当该变量生命周期结束时,系统将自动调用析构函数,释放对应的内存空间。对C++编程来说,要试图将语言提供的内置数据类型(int、float、vector、array、struct等),和自定义的类同等对待,在概念上将它们统一起来,在编程规范尽量保持一致。第二章简要介绍了C/C++编程的基本核心概念,如mani函数,函数头、函数体的概念,非常重要。原创 2023-02-21 12:33:07 · 88 阅读 · 0 评论 -
《C++ Primer Plus》学习笔记(第一章)
C++ Primer Plus原创 2023-02-21 08:00:46 · 123 阅读 · 0 评论 -
Visual Studio 2019编译HTKlib
HTKLib构建共享库原创 2022-09-28 15:52:20 · 289 阅读 · 0 评论 -
C++的多态机制
(1)编译器会为每个包含虚函数的类构建一个虚函数表vptable,这个表中存放该类对象会调用到的虚函数地址。(2)当含有虚函数的类创建对象时,编译器会在对象的地址首位置插入指向该虚函数的指针vptr。(3)如果传递给父类指针的是子类对象地址,那么在调用虚函数时,是通过子类对象的首地址(也是vptr的位置)来找到子类的虚函数表。(4)如果子类重写了父类的虚函数,在虚函数表的相应位置,指向的是重写后的虚函数地址。调用它,从而实现了多态。上述四个前提条件,保证了多态机制。...原创 2021-06-03 22:10:34 · 283 阅读 · 0 评论 -
字符串类——MyString类
字符串操作,写了一个自己的string类,小小的练习。#pragma once#include <iostream>#include <cstring>class MyString {public: MyString(); //默认构造函数 MyString(const char* s); //构造函数 MyString(const MyString& s); //拷贝构造函数 ~MyString(); // 析构函数 MyString& o原创 2020-09-11 09:38:14 · 4750 阅读 · 0 评论 -
static静态变量的理解
static静态变量的理解静态变量 类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)转载 2012-07-11 09:26:56 · 451 阅读 · 0 评论 -
变量的属性
变量的属性(全局变量、局部变量、动态变量、静态变量等) 变量的属性 1、变量的分类l 根据作用域:可分为全局变量和局部变量。l 根据生存周期:可分为静态存储方式和动态存储方式,具体地又分为自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。静态存储方式是指在程序运行期间分配固定的存转载 2012-07-12 10:47:50 · 636 阅读 · 0 评论 -
HTK在windows下安装于测试
网上很多关于HTK安装和测试的帖子,但都是别人的劳动成果。我借鉴并实现了他们的方法,自己安装并测试了。所以写下来一方面是为了供大家参考,但是最主要的还是给自己加深个印象!HTK的官网上其实介绍的很清楚,地址是:http://htk.eng.cam.ac.uk/docs/inst-win.shtml,但是还是有很多细节,对初次接触HTK者和没有太多编程经验如本人,还是不够的“入门”,下面就以该网原创 2012-07-01 23:36:43 · 2424 阅读 · 0 评论 -
main函数之前做了什么?
main函数之前--真正的函数执行入口或开始一种解释实际上,在可执行文件被加载之后,控制权立即交给由编译器插入的Start函数,它将对后面这些全局变量进行准备: _osver 操作系统的构件编号 _winmajor 操作系统的主版本号 _winminor 操作系统的次版本号 _winver 操作系统完全版本号 __argc 命令行参数个数 __argv转载 2012-07-13 20:45:09 · 2242 阅读 · 0 评论 -
The difference between 'typedef' and '#define'
一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef int INT;typedef int ARRAY[10];typedef (int*) pINT;typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“原创 2012-09-27 22:18:20 · 405 阅读 · 0 评论 -
glibc版本问题
最近在搭建一个编译环境,遇到很多系统版本不匹配的问题。这是开源软件的一大硬伤。/DemoService: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./DemoService)./DemoService: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15原创 2017-03-02 11:24:48 · 2063 阅读 · 0 评论 -
静态存储方式
静态存储方式 所谓静态存储方式是指在程序运行期间分配固定的存储空间的方式 变量的存储方式可分为:“静态存储”和“动态存储”两种。 静态存储变量通常是在变量定义时就分定存储单元并一直保持不变,直至整个程序结束。 全局变量即属于此类存储方式。 动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放。 典型的例子是转载 2012-07-11 09:24:19 · 1510 阅读 · 0 评论