- 博客(8)
- 资源 (2)
- 收藏
- 关注
转载 12个有趣的C语言面试题及答案
1.gets()函数问:请找出下面代码里的问题:#include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf("\n The buffer entered is [%s]\n",buff); return 0;
2017-09-19 21:09:49 670
原创 进程有一个全局变量i,还有有两个线程。i++在两个线程里边分别执行100次,能得到的最大值和最小值分别是多少?
i++不是原子操作,也就是说,它不是单独一条指令,而是3条指令:1、从内存中把i的值取出来放到CPU的寄存器中2、CPU寄存器的值+13、把CPU寄存器的值写回内存多核CPU最小值为2,最大值200i++是由3条指令构成的运算操作,两个线程在i变量上共计需要执行100(次循环)*3(条指令)*2(个线程)=600条指令,这600条指令在某种排
2017-09-15 13:38:30 4000
转载 C++中可以在构造函数中调用另一个构造函数吗?
题目如下:问下列代码的打印结果为0吗?[cpp] view plain copy#include #include using namespace std; struct CLS { int m_i; CLS( int i ) : m_i(i){} CLS()
2017-09-15 10:16:16 4441
转载 C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include iostream>using namespace std;class CExample {private: int a;pub
2017-09-14 16:27:39 343
转载 如何创建一个类只能在堆(栈)上建立对象
在C++中,类对象的建立方式有两种,一种是静态建立类对象,如A a;另一种是动态建立类对象,如A* p = new A;这两种方式是有区别的: 静态建立类对象:是指全局对象,静态对象,以及分配在栈区域内的对象,编译器对它们的内存分配是在编译阶段就完成的,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类
2017-09-12 16:19:51 941
转载 C++中cout,cerr,clog的区别
C++标准库定义了4个IO对象,cin,cout,cerr,clog .cin 为标准输入,cout,cerr,clog都是输出流对象,三者有什么区别呢?cout 与cerr的主要区别是cout的输出信息可以被重定向,而cerr则只能输出到标准输出(显示器)上。 例如下面程序编译后生成test.exe // test.cpp #inclu
2017-09-12 10:39:21 665 1
转载 C/C++ 复杂的声明
入门阶段,看见类似void * (*(*fp1)(int))[10];的复杂声明,晕乎。直接略过,这种复杂的东东,不应该是入门者需要去学习的知识。进阶阶段,这种知识就必需得搞得清清楚楚了,不然还等到高阶阶段才学习这个么?现在,就来带大家了解一下,这类复杂的声明怎么解?在解之前,先看一个入门的知识点,指针函数作为参数传递。[html] vi
2017-09-07 20:55:09 898
转载 thread join和detach区别
在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 线程的分离状态决定一个线程以什么样的方式来终止自己。在默认情况下线程是非分离状态的,这种情况
2017-09-05 17:28:51 713
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人