2013.10.4
来源:互联网 发布:pdm产品数据管理软件 编辑:程序博客网 时间:2024/04/30 08:52
1.struct与class区别:
当然C语言只存在struct,而且它只是个结构的封装体。
在C++中,struct与class只有两种区别:
1)默认继承权限:struct为public,class为private
2)默认成员访问权限:同上。
其他严格意义上来说都是一样的。
功能上class已经完全取代了struct,但是有些情况还会选择struct:一些轻量级并不需要严格封装的结构;为了与传统的api进行通讯有时不得不用struct;当然有时选择struct使得代码看起来更简洁一些。
2.程序的内存分配与例子
1)栈区(stack):由系统进行分配释放,存储局部变量,函数参数等。结构类似于Stack。
2)堆区(heap):又程序员进行分配释放,如果程序员没有释放则有os进行释放,比如malloc和new等操作。结构类似于链表。
3)全局区(静态区static):全局变量和static变量存储在一块。初始化的放在一块,为初始化的放在相邻一块。程序结束后由系统释放。
4)文字常量区:常量字符串。程序结束由系统释放。
5)代码区:存储二进制代码。
例子:
//main.cpp
int a = 0; 全局初始化区
char *p1; 全局未初始化区
main()
{
int b; 栈
char s[] = "abc"; 栈
char *p2; 栈
char *p3 = "123456"; 123456/0在常量区,p3在栈上。
static int c =0; 全局(静态)初始化区
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
分配得来得10和20字节的区域就在堆区。
strcpy(p1, "123456"); 123456/0放在常量区,编译器可能会将它与p3所指向的"123456"
优化成一个地方。
}
- 2013.10.4
- 2013.10
- extjs 资源云平台 2013.10.4--固定资产管理
- 2013.10.04
- 2013.10.05
- 2013.10.07
- 2013.10.14
- 2013.10.14
- 2013.10.15
- 2013.10.15
- 2013.10.16
- 2013.10.17
- 2013.10.18
- 2013.10.19
- 2013.10.20
- 2013.10.21
- 2013.10.21
- 2013.10.22
- node里只有js引擎是单线程,不代表整个node都是单线程
- JNI--Java中调用DLL
- Myeclipse安装SVN插件
- unicode
- STL源码剖析_读书笔记:第四章 序列式容器 stack篇
- 2013.10.4
- CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
- Visual Studio2012不能使用scanf()等函数的解决方案
- Hadoop Pipes “Server failed to authenticate”错误及解决
- VM中的Linux安装jdk和tomcat
- 学习bootsect.s中经常会问到的问题
- VM中装Linux换ISO文件报错"该光盘无法被挂载"
- TCP/IP底层原理
- 有木有像我一样被科幻片中各种未来电脑系统迷得不行的小伙伴们?