C语言补漏
Jicky1984
这个作者很懒,什么都没留下…
展开
-
堆和栈的区别
<br />堆和栈的区别 <br />一、预备知识—程序的内存分配 <br />一个由c/C++编译的程序占用的内存分为以下几个部分 <br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 <br />2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 <br />3、全局区(静态区)(static)—,全局变量和静态变量的存储是原创 2010-11-22 15:28:00 · 961 阅读 · 0 评论 -
指向指针的指针的应用
一. 回顾指针概念: 今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧! 当我们程序如下申明变量: short int i; char a; short int * pi; 程序会在内存某地址空间上为各变量开辟空间,如下图所示。 内存地址→6 7 8 9 10 11 12 13 1原创 2011-11-17 16:50:44 · 604 阅读 · 0 评论 -
typedef 的理解 typedef struct 结构体
C/C++中typedef struct和struct的用法 struct _x1 { ...}x1; 和 typedef struct _x2{ ...} x2; 有什么不同? 其实, 前者是定义了类_x1和_x1的对象实例x1, 后者是定义了类_x2和_x2的类别名x2 , 所以它们在使用过程中是有取别的.请看实例1.原创 2011-11-17 16:15:07 · 664 阅读 · 0 评论 -
C++指针与引用的区别
指针是C系语言的特色。指针是C++提供的一种颇具特色的数据类型,允许直接获取和操纵数据地址,实现动态存储分配。 指针问题,包括常量指针、数组指针、函数指针、this指针、指针传值、指向指针的指针等,这些问题也是各大公司常备考点,下面让我们一起学习其中的重点与难点1、指针与引用的区别?答案:(1)非空区别。在任何情况下都不能使用指向空值的引用。因此如果你使用一原创 2011-11-17 16:35:17 · 551 阅读 · 0 评论 -
int在32位机器中所占的内存大小引发的问题
今天看到一个资料,看到里面讲到int在32位机器中占的是四个字节的内存,我脑海里面感觉这个好像不对,然后在网上查了下资料,发现int类型的数据在32位机器中的确占的内存是4个字节,现在对一些数据结构在内存中所占的字节数总结下。 1: char a: s原创 2011-08-06 14:56:29 · 2994 阅读 · 2 评论 -
堆和栈的区别 5
<br />HANDLE hHeap=GetProcessHeap(); <br />char *buff=HeapAlloc(hHeap,0,8); <br /><br />其中hHeap是堆对象的句柄,buff是指向申请的内存空间的地址。那这个hHeap究竟是什么呢?它的值有什么意义吗?看看下面这段代码吧: <br /><br />#pragma comment(linker,"/entry:main") //定义程序的入口 <br />#include <windows.h> <br /><原创 2010-11-22 15:36:00 · 706 阅读 · 0 评论 -
堆和栈的区别 4
<br />;如果是“__cdecl”的话,这里是“ret”,堆栈将由调用者恢复 <br /><br />;-------------------函数结束------------------------- <br /><br /><br />;--------------主程序调用func函数的代码-------------- <br /><br />:00401080 6A03 push 00000003 //压入参数param3 <br />:00401082 6A02 push 0000000原创 2010-11-22 15:34:00 · 702 阅读 · 0 评论 -
堆和栈的区别 3
<br />├———————┤低端内存区域 <br />│ …… │ <br />├———————┤ <br />│ 动态数据区 │ <br />├———————┤ <br />│ …… │ <br />├———————┤ <br />│ 代码区 │ <br />├———————┤ <br />│ 静态数据区 │ <br />├———————┤ <br />│ …… │ <br />├———————┤高端内存区域 <br /><br /><br />堆栈是一个先进后出的数据结构,栈原创 2010-11-22 15:33:00 · 497 阅读 · 0 评论 -
堆和栈的区别 2
<br />当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。 <br />堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。 <br /><br />2.6存取效率的比较 <br /><br />char s1[] = "aaaaaaaaaaaaaaa"; <br />char *s2 = "bbbbbbbbbbbbbbbbb"; <br />aaaaaaaaaaa是在运行时刻赋值的; <br原创 2010-11-22 15:32:00 · 523 阅读 · 0 评论 -
C语言中字符数组和字符串指针分析
这几天学习linux上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么用到过C,虽然网上这类的文章也有很多,还是决定自己在这做个小总结,也算加深下自己的印象,写了下面的测试程序:#include int main(int argc, char *argv[]){ char day[15] = "ab原创 2011-11-18 23:05:25 · 575 阅读 · 0 评论