编程语言C/C++
随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者。而在今天,它后端服务器、移动互联网后端、移动互联网端界面开发、跨平台界面开发发挥着巨大的作用,本专栏主要是博主对C/C++学习的一些总结。
C/C++ farer
这个作者很懒,什么都没留下…
展开
-
题目摘录-编程语言(C++)(四)
Q 31 :题目: 分析一下这段程序的输出: #include<iostream> using namespace std; class B{ public: B(){ cout << "default constructor" << " "; } ...原创 2019-03-23 15:25:23 · 1089 阅读 · 0 评论 -
题目摘录-编程语言(C++)(三)
Q 21 :题目: i的初始值为0,i++在两个线程里面分别执行100次,能得到最大值是(),最小值是()。答案: 200 2解答: 考察多线程操作同一未上锁变量。 1. 每次都准确加1,结果为最大,200。 2. 结果为2时步骤: a取内存0到寄存器,b取内存0到寄存器; a执行99次并写入内存,内存值为9...原创 2019-03-09 17:50:43 · 1941 阅读 · 0 评论 -
题目摘录-编程语言(C++)(二)
题目摘录-编程语言(C++)(二)Question 11 :题目: 某32位系统下, C++程序,请计算sizeof 的值: char str[] = "http://www.xxxxx.com"; char *p = str; int n = 10; sizeof(str) = (1); sizeof(p) = (2; sizeof(n...原创 2019-03-08 13:01:09 · 2522 阅读 · 0 评论 -
题目摘录-编程语言(C++)(一)
题目摘录-编程语言(C++)(一)Question 1 :题目: 以下代码: class ClassA{ public: virtual ~ClassA(){}; virtual void FunctionA(){}; }; class ClassB{ public: virtual void Fu...原创 2019-03-08 12:55:36 · 3963 阅读 · 0 评论 -
编程语言C/C++(七)—— STL(二)
set实现原理:set 的特性是,所有元素都会根据元素的键值自动被排序。set 的元素不像 map 那样可以同时拥有实值(value)和键值(key),set 元素的键值就是实值,实值就是键值,set不允许两个元素有相同的值。set 底层是通过红黑树(RB-tree)来实现的,由于红黑树是一种平衡二叉搜索树,自动排序的效果很不错,所以标准的 STL 的 set 即以 RB-Tree 为底层机...原创 2019-04-16 19:04:36 · 588 阅读 · 0 评论 -
编程语言C/C++(六)—— STL(一)
标准模板库C++ STL 的实现:序列式容器(元素的位置与插入的时机、地点有关)(线性结构)1.vector 底层数据结构为数组 ,支持快速随机访问2.list 底层数据结构为双向链表,支持快速增删3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问。deque是一个双端队...原创 2019-04-01 18:57:04 · 1599 阅读 · 0 评论 -
C++ 智能指针
C++ 智能指针这里介绍c++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr([wiːk]), unique_ptr([juː’niːk]) 其中后三个是c++11支持,并且第一个已经被c++11弃用。为什么要使用智能指针:我们知道c++的内存管理是让很多人头疼的事,当我们写一个new语句时,一般就会立即把delete语句直接也写了,但是我们不能避免程...原创 2019-03-17 00:07:01 · 437 阅读 · 0 评论 -
编程语言C/C++(五)
1. 关于友元- 有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的。例如被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员。友元(frend)机制允许一个类将对其非公有成员的访问权授予指定的函数或者类,友元的声明以friend开始,它只能出现在类定义的内部,友元声明可以出现在类中的任何地方:友元不是授予友元关系的那个类的成员,...原创 2019-03-26 18:21:35 · 9372 阅读 · 1 评论 -
编程语言C/C++(四)
1. 堆和栈的区别?- 申请方式不同。 - 栈由系统自动分配。 - 堆由程序员手动分配。- 申请大小限制不同。 - 栈顶和栈底是之前预设好的,大小固定,可以通过ulimit -a 查看,由ulimit -s修改。 - 堆向高地址扩展,是不连续的内存区域,大小可以灵活调整。- 申请效率不同。 - 栈由系统分配,速度快,不会有碎片。...原创 2019-03-23 15:12:11 · 9755 阅读 · 0 评论 -
编程语言C/C++(三)
1. 结构体内存对齐问题?- 按序存储,装得下尽量装,装不下换一行。- 如果最大的基本元素小于等于机器位宽,按照最大基本元素大小对齐,否则按照机器字长对齐。2. static作用是什么?在C和C++中有何区别?- static可以修饰局部变量(静态局部变量)、全局变量(静态全局变量)和函数,被修饰的变量存储位置在静态区。对于静态局部变量,相对于一般局部变量其生命周期长,直到程序运行结...原创 2019-03-10 15:24:54 · 3106 阅读 · 0 评论 -
编程语言C/C++(二)
编程语言C/C++的一些基本概念(二)(1)关于Linux下的输入/输出重定向:在Linux中,每个打开的文件被赋予一个文件描述符(file descriptor),包括标准输入(stdin),标准输出(stdout)和标准错误输出(stderr),由0,1,2分别描述。command &> file 表示将标准输出(stdout)和标准错误输出(stderr)重定向至指定的文...原创 2019-03-07 11:54:39 · 8215 阅读 · 0 评论 -
编程语言C/C++(一)
编程语言C/C++的一些基本概念(一)(1)简述变量声明和定义的区别。为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但是只在一个地方定义。加入extern修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义(2)正确认识sizeof:**在32位机器中,如下代码:答案为4,23void example(char acWelcome[]){...原创 2019-03-06 17:46:45 · 13658 阅读 · 4 评论