189 8069 5689

c语言固定函数地址 c语言指定变量地址

c语言每部分内存都有一固定地址吗?不能改变?

定义一个变量,系统的确会分配一个内存单元A来存储这个变量。而A的固定地址已经是物理地址了。不需要在分配一个来存储该地址。

成都创新互联公司是专业的永新网站建设公司,永新接单;提供成都网站制作、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行永新网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

该变量已经实际存在在内存物理地址上了。

如何定义入口地址固定的函数

你说的for,我看出来你已经知道存在那些功能,但是还不知道某个功能是不是被实现了,下面又是一个例子:

FUN funs[16]={fun1,NULL,fun3};//假设我们知道最多也就16个功能,但是目前只有功能0和2被实现,功能1和其他的3~15都还没有实现

for(...)

{

int funCode;

...

if(funs[funCode]!=NULL)//如果不是NULL,说明对应的功能号被实现了

funs[funCode](...)//调用

}

---------------------------------------------------------

楼主,C语言是不应该干这件事的!

楼主你的需求实际上可以这样描述:

1 怎样才能根据输入条件来调用不同的函数

2 条件和函数是一一对应的,但是函数在哪是不确定的,例如可能是其他函数传进来的。

我举个简单例子来解决你的问题

typedef void (*FUN)(...);//参数列表和返回值自己填

//定义一些功能函数

void fun1(...)

{

printf("1\n");

}

void fun2(...)

{

printf("1\n");

}

....

//上面的注意了,参数列表和返回值要一样的

FUN funs[]={fun1,fun2,...};//把函数的指针放进数组,就像你C51的向量区,存放了许多函数的地址,这里最终放的也是地址,只不过等程序编译好了才知道是多少,

...//一堆代码

int funCode;//用来存放计算出来的功能代码,例如0表示fun1,1表示fun2

...//一堆超级复杂而且重要且不可逃避的代码之后,funCode被设为了某个值,这个这个值实际上是我精心而且故意设计为理解简单的小玩意,代表某个功能的代码。

funs[funCode](...)//调用功能函数(知道funCode需要精心设计了吧,funCode为0就调用了fun1),当然你也可以把funs传到某个函数,然他也像这样使用传进去的函数。

c语言,为什么函数的地址不会变?

函数的地址是在代码空间中,在编译时就分配好了。

代码空间就是系统中存放你写的代码的地方,不同的行地址当然就不一样咯

c语言中,什么是函数的地址

变量是存放在内存中的,只要是存放在内存中的二进制数就会有一个内存的地址,所有变量是有地址的!

那函数是什么呢?函数是由一些运行的语句组成的,程序运行的时候就会把函数中的语句调用到内存中去,那么函数代码在内存中开始的那个内存空间的地址就是函数的地址!

至于函数中用的变量的地址并不是放在代码区的,一般都放在另外的两个地方,其实地址上是有很大的差值的

希望你能理解上面的内容,祝愿你学习C语言能马到成功!


当前文章:c语言固定函数地址 c语言指定变量地址
转载注明:http://cdxtjz.cn/article/ddsppoj.html

其他资讯