C++语言基础——补充知识运行时内存指针和内存地址1
指针和数组3
动态内存分配函数调用和内存输入输出(cout和cin)目录运行时内存指针和内存地址指针地址指针和数组动态内存分配函数调用和内存输入输出(cout和cin)什么是“计算机”
图灵机1937(计算机理论之父)是么是“算法”
问题的可计算性人工智能的界限冯·诺依曼思想1946(现代计算机之父)1
用二进制代码表示程序和数据;2
计算机采用存储程序的工作方式;3
计算机硬件由存储器、运算器、控制器、输入设备和输出设备组成
程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack)由编译器自动分配释放,存放函数的参数值,局部变量的值等
其操作方式类似于数据结构中的栈2、堆区(heap)一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收
注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵
3、全局区(静态区)(static)全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域
-程序结束后有系统释放4、文字常量区常量字符串就是放在这里的
程序结束后由系统释放5、程序代码区存放函数体的二进制代码
例inta=0;全局初始化区char*p1;全局未初始化区main(){intb;栈chars[]="abc";栈char*p2;栈char*p3="123456";123456\0在常量区,p3在栈上
staticintc=0;全局(静态)初始化区p1=(char*)malloc(10);p2=(char*)malloc(20);分配得来得10和20字节的区域就在堆区
strcpy(p1,"123456");123456\0放在常量区,编译器可能会将它与p3