189 8069 5689

c语言函数地址固定 c语言自定义函数的位置

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

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

成都创新互联公司服务项目包括尚志网站建设、尚志网站制作、尚志网页制作以及尚志网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,尚志网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到尚志省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

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

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

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

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

c语言中可以定义固定变量的地址吗?万分感谢

不能,在一开始创建的时候计算机就会自动分配给它特定的地址,况且有些地址还是不能访问的。

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

你说的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语言中函数调用时若是传地址,行参和实参在同一地址吗

不是的

1、实参在定义时就开辟存储单元,这个存储单元地址在整个程序中是固定不变的;

2、只有在函数调用时才给形参开辟存储空间,如果是值传递,则将实参的值赋给形参,如果是地址传递,则为形参开辟一个临时指针变量,然后把实参的地址传送给形参

3、函数执行完毕返回主程序时,释放形参所占的存储单元。


分享文章:c语言函数地址固定 c语言自定义函数的位置
当前URL:http://cdxtjz.cn/article/hiiepo.html

其他资讯