导航

2011年12月18日

摘要: 今天用extern突然发现了extern的另一个特点。比如,现在operator.c里面有个全局数组变量int arr[5],和三个函数f1,f2,f3.#include<stdio.h>#define MAX 5int arr[MAX]={2,3,4,5,6};int sum(){ int i,n;n=0;for(i=0;i<MAX;i++){ n+=arr[i];}return n;}int get_max(){ int max;int i;i=0;max=arr[i];for(i=0;i<MAX;i++){ if(arr[i]>max)max=arr[i]; 阅读全文

posted @ 2011-12-18 22:11 网名还没想好 阅读(252) 评论(0) 推荐(0) 编辑

摘要: 函数的本质是一段二进制代码,这些代码是可以直接被机器执行的指令。在翻译为汇编语言时,函数被翻译成一段相对独立的代码,并且使用函数名作为编号,表示此段代码的入口。当程序调用该函数时,只需要转到该入口就可以了。因此函数名的值等于内存中存储该代码段的首地址 函数在调用时会使进程空间中的栈不断增长,从当前进程空间中的栈顶的位置到函数保存返回地址的位置,这块内存称为函数的栈帧,所有函数的局部变量都保存在栈帧上,当函数结束调用时这块栈真就消失了,全局变量保存在数据段.下面看看怎么取出栈里的数据吧,#include<stdio.h>void fun(int a,...){ int *p=& 阅读全文

posted @ 2011-12-18 20:38 网名还没想好 阅读(293) 评论(0) 推荐(0) 编辑