随笔分类 -  02_C++&C

1 2 3 4 5 ··· 7 下一页
摘要:C 标准库头文件有29个: <stdio.h> 输入/输出 定义输入/输出函数<stdlib.h> 基础工具:内存管理、程序工具、字符串转换、随机数、算法;定义杂项函数及内存分配函数<string.h> 字符串处理<stddef.h> 常用宏定义<ctype.h> 用来确定包含于字符数据中的类型的函 阅读全文
posted @ 2022-01-23 23:26 Grooovvve 阅读(122) 评论(0) 推荐(0)
摘要:【函数指针】 指向函数的指针;函数是有地址的;函数指针存储了函数指令的起始地址; 声明一个函数指针:需要指明函数返回类型和形参类型;int (*fp)(int,int);*fp为一体,说明了指针类型;*fp需要用括号括起来; 还可以结合typedef为函数指针类型起一个新名字:typedef int 阅读全文
posted @ 2021-04-14 23:41 Grooovvve 阅读(72) 评论(0) 推荐(0)
摘要:【头文件引用符号区别】 用<>和""是有一定的区别的。在编译器查找头文件的时候,会在两个区域分别查找。 <> : 是系统头文件区域,即类似于stdio.h一类的C库函数头文件区。 "" : 是自定义头文件区,比如当前目录,以及其它自定义的目录。 用<>时,编译器会先在系统区域查找,然后再查找自定义区 阅读全文
posted @ 2021-04-14 23:32 Grooovvve 阅读(248) 评论(0) 推荐(0)
摘要:static关键字的使用比较微妙;static修饰函数:static修饰的函数,仅限在本源码文件中使用;不能被本源码以外的代码文件调用;静态函数的声明不应该放在头文件里,应该放在静态函数所在的文件里。static函数只能在本编译单元有效,编译器只有该函数的入口的地址,没有该函数名,其它的编译单元无法 阅读全文
posted @ 2020-12-21 10:02 Grooovvve 阅读(304) 评论(0) 推荐(0)
摘要:typedef struct Student{int a;}Stu;//Stu是 struct Student的别名;使用typedef为struct Student取个别名;如果没有使用typedef的话,声明变量就需要完整的写法 struct Student stu1;声明变量时为了方便,没有人 阅读全文
posted @ 2020-10-26 23:04 Grooovvve 阅读(91) 评论(0) 推荐(0)
摘要:预处理器可以简化某些工作: 第一个原因:某些特定的数量,路径,字符串可能在程序中出现很多次。可以定义一个宏,例如把数值定义成显式常量。这样修改的时候只要改一个地方就可以了。另外预处理器可以很容易地将所有常量定义在一起,找到 常量就变得很容易。 第二个原因:函数调用会带来系统开销,那么可以用 宏定义一 阅读全文
posted @ 2020-08-15 10:39 Grooovvve 阅读(128) 评论(0) 推荐(0)
摘要:宏 用于预处理,预处理不是编译,而是编译前对源文件文本的处理,得到真正待编译的文本; 常用的宏: #define :这个宏一般用于定义一个别名,然后预处理时把别名替换成真正的名称,注意这只是文本层面的替换; 这个宏常用于定义常量; #define PI 3.1415 #define ERROR_PO 阅读全文
posted @ 2020-02-29 11:41 Grooovvve 阅读(203) 评论(0) 推荐(0)
摘要:重载、内联、const、vitrual:const virtual仅用于类的成员函数; 重载和内联机制可用于全局函数也可用于类的成员函数; 重载内联有好处,但也有局限性,所以使用时要注意,不能滥用; 重载:自然语言当中有重载现象,人们可以通过上下文判断该词的真正含义,词的重载可以使得语言更加简练。C 阅读全文
posted @ 2020-02-29 11:40 Grooovvve 阅读(418) 评论(0) 推荐(0)
摘要:类的构造、析构和赋值函数是每个类最基本的函数。 每个类只有一个析构、赋值函数;可以有多个构造函数。 例如对于类A,如果没有编写上述函数,C++编译器将自动为类产生四个缺省的函数; A(void); //缺省的无参数构造函数 A(const A &a); //缺省的拷贝构造函数 ~A(void); / 阅读全文
posted @ 2020-02-29 11:31 Grooovvve 阅读(165) 评论(0) 推荐(0)
摘要:单字、双字、四字在内存的自然边界上,所以不需要再内存中对齐。 自然边界是指:偶数地址,可以被4整除的地址、可以被8整除的地址; 编译器会默认将结构、栈中的成员数据进行对齐。 这是因为如果未对齐,比如对一个字或者双字操作数跨越了4字节边界,那么就需要两个总线周期来访问内存。从时间角度来看效率比较差。 阅读全文
posted @ 2020-02-29 00:08 Grooovvve 阅读(162) 评论(0) 推荐(0)
摘要:先讲讲运算符优先级: . 优先级 大于 * [] 优先级高于 * () 优先级高于 * == 和 !=高于位操作 == 和 !=高于赋值符 算术运算符高于位移运算符 阅读全文
posted @ 2020-02-28 23:51 Grooovvve 阅读(157) 评论(0) 推荐(0)
摘要:static关键字 主要有4个使用场景:1、修饰类的成员变量和成员方法(常用): 被修饰的成员属于类,不属于单个类对象,为所有类对象所共享。 并且建议通过类名调用。被修饰的成员变量与方法存放在静态存储区。 2、 函数内的静态变量: 其作用范围为函数内,其生命期为整个程序生命期。 这样可以保证多次调用 阅读全文
posted @ 2020-02-28 23:34 Grooovvve 阅读(189) 评论(0) 推荐(0)
摘要:一、野指针 定义指针变量时最好初始化为NULL; 内存回收后,指针也用完了,这时候也需要及时将指针置为NULL; 指针就像野狗一样,为了防止它乱指,除了在使用期间,别的时候都需要置为NULL。这样它就老实了。 二、栈、堆和静态区 我们可以简单把内存分为三个部分:静态区、栈、堆; 静态区:保存自动全局 阅读全文
posted @ 2020-02-27 22:27 Grooovvve 阅读(166) 评论(0) 推荐(0)
摘要:一、数组参数: 1 //数组作为参数,编译器会把它解释为一个指向其首元素首地址的指针; 2 void func(char a[],int length){ 3 //a表示的是首元素的首地址,a+3表示的是数组第三个元素的首地址 4 //数组下标和指针形式访问都行; 5 cout<<a[3]<<end 阅读全文
posted @ 2020-02-27 10:17 Grooovvve 阅读(307) 评论(0) 推荐(0)
摘要:1、new 一个对象: 1 class Solution{ public: 2 Solution(){ 3 4 } 5 6 Solution(int value){ 7 this->value = value; 8 } 9 }; 10 int main() 11 { 12 Solution * so 阅读全文
posted @ 2020-02-27 08:54 Grooovvve 阅读(262) 评论(0) 推荐(0)
摘要:简单来说,再赋值符号“=”左边的就是左值;右边的就是右值; 例如 x = y; 左值 ,编译器认为x的含义是x所代表的地址;这个地址只有编译器知道。在编译时确定;编译器在特定的区域保存这个地址;给x赋值的意思就是往x所代表的地址的内存空间中赋值; 右值,编译器认为y的含义y所代表的地址里的内容;这个 阅读全文
posted @ 2020-02-26 19:39 Grooovvve 阅读(173) 评论(0) 推荐(0)
摘要:首先明确一些基本概念: = 等于号两边的数据类型要一致,如果不一致需要显式或者隐式的类型转换; 变量作为右值时,编译器只是取变量的值。 运算符的优先级:()>[]>* 接下来看: int *p1[10]; 表示是一个数组p1,[]的优先级比*高。元素是指针的数组,指针数组; int (*p2)[10 阅读全文
posted @ 2020-02-25 17:19 Grooovvve 阅读(236) 评论(0) 推荐(0)
摘要:#include <iostream> using namespace std; int main() { int a[4] = {1,2,3,4}; cout<<"sizeof(a) is "<<sizeof(a)<<endl; cout<<"sizeof(a[0]) is "<<sizeof(a 阅读全文
posted @ 2020-02-24 16:53 Grooovvve 阅读(146) 评论(0) 推荐(0)
摘要:#include <iostream> using namespace std; int main() { int * p; int a = 5; p = &a; cout<<"sizeof a is "<<sizeof(a)<<endl; cout<<"sizeof p is "<<sizeof( 阅读全文
posted @ 2020-02-24 16:25 Grooovvve 阅读(183) 评论(0) 推荐(0)
摘要:一、thread 线程 c++11中thread join和detach的区别:https://blog.csdn.net/c_base_jin/article/details/79233705 c++11 使用detach()时,主线程和孤儿detach线程的同步控制:https://blog.c 阅读全文
posted @ 2020-02-24 09:16 Grooovvve 阅读(144) 评论(0) 推荐(0)

1 2 3 4 5 ··· 7 下一页