C++
文章平均质量分 52
limonero
这个作者很懒,什么都没留下…
展开
-
chapter 11 in C primer plus
1、gets(const char*) 不检查输入字符串的长度,遇到第一个换行符终止,并且会读取该换行符,将换行符丢弃,最后追加尾0,‘、0’, 如果读取错误返回0 或者NULL。5、strncmp() 与sttrcmp用法相同,多一个参数,该参数指定比较前n个字符,如果前n个字符是相同的则返回0,否则返回1 或者-1。2、strcat() 将第二个字符串的拷贝追加到第一个字符串末尾,不检查字符串的容量是否足够添加,如果不够则会出现错误。6、fputs() 参数多一个,需要说明输出目标地址。...原创 2022-08-27 09:57:42 · 227 阅读 · 0 评论 -
chapter 8 in C primer plus
注释4: 如果要是通用getchar()中输入结束符号EOF,则必须知道该操作系统结束标记是什么,不可简单的输入EOF、-1 来结束输入。一般出现在文件输入中。注释: c语言实际判断文件是否到达尾部的方法是: 判断当前读取的位置与文件的大小进行比较,如果两个值相同那么说明已经到了文件的尾部,这时候读取文件的函数返回EOF。注释2: 早期MS_DOS系统通过在文件的尾部添加^z 来表示文件尾部,也就是说,只要读取到^z 该字符就表示已经读取到了文件尾部。当遇到换行符的时候,就将缓冲区的内容进行清空,刷新。原创 2022-08-24 22:43:33 · 308 阅读 · 0 评论 -
chapter 7 in C primer plus
4、C语言规定一条switch语句可以有至少257个case语句,这是下限。但实际允许多少个由编译器决定,编译器只能保证不少于257个。可取数据类型为常量整数或者char类型的字符。定义了一批 C 语言字符分类函数,用于测试字符是否属于特定的字符类别,如字母字符、控制字符等等。既支持单字节(Byte)字符,也支持宽字符。2、 getchar() 读取下一个输入流中的字符,并将此字符使用ASCII 码表 转换为一个无符号的int值。3、goto语句只能在一个函数范围内跳转,不能跨函数。原创 2022-08-23 14:23:18 · 285 阅读 · 0 评论 -
gcc 编译标准
gcc/g++ -std=编译标准。原创 2022-08-22 11:00:19 · 117 阅读 · 0 评论 -
chapter four in C primer plus
以上调用告诉计算机把变量的值传递给计算机,计算机会把这些值存放在堆栈 stack的一块内存区域来实现。压栈的方式是按照变量的类型来进行放置的,而不是依据转换说明符的规则来放置的。printf函数从堆栈上按照转换说明符的规则取得内存区域的数据,由于%ld 说明符号占用4个字节,因此会取得n1 前半部分的4个字节,后面的四个字节没有被读取到,依次类推后面的数据读取也将会发生错误。如果变量和转换说明符的数据类型不一致,那么将会在不匹配的地方停止匹配,而不会跳过。lemon 5个字符。返回读取到的变量的数目,原创 2022-08-21 15:00:00 · 131 阅读 · 0 评论 -
chapter three in C primer plus
char类型占用大小: c中定义为一个字节byte的大小作为char使用的位数bit,因此可能并不是8位、可能是16位或者32位。字符使用单引号表示,表示法可是使用单字符表示、也可以使用ASCII 码来表示 , 使用 %c打印。使用long类型的时候,最好添加后缀 l 或者 L : 7L、6l,020L、0x10L。1、int 类型一般储存在计算机中的一个字中,所以一般计算机时多少位的处理器,int类型将会占用多少位。十进制使用%d 、%hd、%ld 八进制使用%0 十六禁止使用%x、%#x。原创 2022-08-20 11:04:22 · 179 阅读 · 0 评论 -
make 基本使用1
#GNU的make步骤一般如下:# 1、读入所有的makefile# 2、读入被include的其他makefile# 3、初始化所有的变量# 4、推到隐藏规则,并分析所有规则# 5、为所有目标文件创建依赖关系链# 6、根据依赖关系。决定哪些目标要重新生成# 7、执行生成命令1、使用的基本文件,main.c 、tool.c、 tool.h这些文件都在同一个目录下main.c#include <stdio.h>#include <stdlib.h>.原创 2021-08-05 10:32:11 · 333 阅读 · 0 评论 -
c++ STL 007 容器(list)
list模版原型:template < class T, class Alloc = allocator > class list;Lists are sequence containers that allow constant time insert and erase operations anywhere within the sequence, and iteration in both directions.List containers are implemented as原创 2020-07-14 19:31:49 · 129 阅读 · 0 评论 -
c++ STL 006 容器(vector)
类模板原型class templatestd::vectortemplate < class T, class Alloc = allocator > class vector;说明vector 可以看成是一个动态数组,这个数组是可以动态扩容或者缩减的。Internally, vectors use a dynamically allocated array to store their elements. This array may need to be reallocate原创 2020-07-10 15:00:00 · 311 阅读 · 0 评论 -
c++ STL 005 分配器/泛型编程/模版基础
分配器 allocator用于给stl容器进行数据空间的分配,每一个容器都有默认的分配器,以保证容器能够取得指定的内存。容器在构造时,会将默认的分配器作为默认参数对容器进行构造。*operator new 和malloc*operator new c++范围,可以重载,使用::operator delete进行释放。malloc c函数,不可重载,使用free进行释放内存。不同的编译器设计的分配器可能会有不同,一般使用的是以上的其中一种。所有容器,默认第二个参数为allocator分配器原创 2020-07-09 20:34:59 · 119 阅读 · 0 评论 -
c++ STL 004 容器(array)
array是一个模板类:函数原型: template < class T, size_t N > class array;Array classArrays are fixed-size sequence containers: they hold a specific number of elements ordered in a strict linear sequence.成员函数返回Iterators 对象数据, 返回的是一个常量/非常量引用对象容量,大小,是否为原创 2020-07-08 15:35:29 · 492 阅读 · 0 评论 -
c++ STL 003 容器分类测试
容器分类arrayvectorqequelistforward-listset/multisetmap/multimapunordered set/multisetunordered map/multimaphashtable容器测试(测试创建时间和排序时间)#include <iostream>#include <array>#include <ctime>#include <cstdlib> //qsort .qsea原创 2020-07-07 22:20:04 · 144 阅读 · 0 评论 -
c++ STL 002 迭代器
ss原创 2020-07-07 11:29:17 · 351 阅读 · 0 评论 -
c++ STL 001 基本概念
学习网站www.cplusplus.comen.cppreference.com/w/gcc.gnu.orgSTLSTL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库容器: Containers 需要操作的数据对象分配器 : Allocators 使用分配器对容器需要的内存空间进行分配算法: Algorithms 被独立出来的模板函数,用来操作容器。迭代器: Iterators是一种泛化的指原创 2020-07-06 20:23:33 · 304 阅读 · 0 评论 -
c 指针(指针和函数)
程序栈支持函数执行的内存区域,通常和堆共存。即二者共同拥有一块内存区域,栈位于内存区域的下部,堆位于内存区域的上部。函数传值用指针传递数据: 一般用于对传入的数据进行修改void funcA(int* num1,int* num2){ int temp; temp = *num1; *num1 = *num2; *num2 = temp;}int main(){ int n1 = 10; int n2 = 20; funcA(&n1,&n2); //交换n1和原创 2020-07-04 16:37:29 · 121 阅读 · 0 评论 -
c指针2(动态内存管理)
动态内存分配的基本步骤使用malloc 类的函数分配内存使用分配的内存进行数据操作使用free函数来释放内存 malloc 和free函数必须是成对出现的 建议在free之后将指针赋值为NULL int* p = (int*)malloc(sizeof(int)); *p = 5; cout << *p << endl; free(p);内存泄漏不再使用的已分配的内存没有将其释放称为内存泄漏内存泄漏: 1. 丢失了原创 2020-07-02 21:25:17 · 91 阅读 · 0 评论 -
c 指针1(基本概念)
指针的声明:数据类型* 指针变量名e.g: int* p;星号两边的空格无关紧要,并不影响指针的声明:int* p;int * p;int *p;这几者都是一样的,等价的注意:指向还没有初始化内存的指针可能会产生问题。如果将这种未初始化的指针进行解引,指针的内容会是一些不合法的数据,造成程序的异常。地址操作符 &地址操作符& 返回操作数的内存地址。这个内存地址可以用来初始化指针。例如: int num = 10; int* p = &am原创 2020-07-01 21:31:53 · 174 阅读 · 0 评论 -
c++ 基础: 类模版\函数模版\命名空间\组合与继承
类模版类似于java中的泛型定义:temlpate<typename T>class complex{public: complex(T r=0,T i=0):re(r),im(i){} complex& operator += (const complex& ); T real() const {return re;} T imag() const {return im;}private: T re,im; friend complex&原创 2020-06-30 21:12:12 · 231 阅读 · 0 评论 -
c++ 自定义类出现Undefined symbols for architecture x86_64
错误描述Undefined symbols for architecture x86_64:“MyLIs::MyLIs(char const*)”, referenced from:_main in main.cpp.old: symbol(s) not found for architecture x86_64clang: error: linker command failed with exit code 1 (use -v to see invocation)可能错误It seems原创 2020-06-28 16:40:48 · 1504 阅读 · 0 评论 -
C++之string、带有指针的class
string原创 2020-06-26 17:20:45 · 564 阅读 · 0 评论 -
Mac下安装gcc
控制台执行:安装homebrew/bin/zsh -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)”安装gccbrew install gcc@8原创 2020-06-26 16:16:51 · 1576 阅读 · 1 评论 -
C++之complex、不带指针class
头文件 complex .h内联函数 在头文件中声明和实现的函数。内联函数运行速度快。内联函数使用inline关键字进行修饰。但是即使使用inline修饰之后,函数也不一定会成为真正的内联函数。是否是真正的内联函数是由编译器来决定的。编译器会根据函数的具体实现来决定该函数是否作为内联函数来使用。成员修饰 public、private 作为是否需要被外界所使用。其中修饰可以是随机排列的,不一定要顺序排列构造函数 与class名称相同的函数,无返回值。构造函数可以拥有多个,即重载。但是不能使原创 2020-06-24 09:05:04 · 407 阅读 · 0 评论 -
C++基本概念
书籍C++ 标准库C++ primer 第五版class 分类class一般分为两种:不带有指针class,例如复数: complex带有指针的class ,例如字符串:string文件分类.h 头文件,定义class的基本结构.cpp 实现class的文件C 与C++1. c: 数据 + 函数(独立与数据的函数,数据通过函数实现结果输出) 2. c++ : 数据 + 数据成员方法(方法作为数据的一部分而存在)即class类头文件引入标准库: 使原创 2020-06-23 20:29:30 · 128 阅读 · 0 评论