c语言怎么求出函数段地址
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言怎么求出函数段地址相关的知识,希望对你有一定的参考价值。
int a;
void f1(void)
a=1;
void f2(void)
a=2;
void f3(void)
a=3;
main()
printf("%x\n %x\n %x\n%x\n%x",f1,f2,f3,main);
如printf("%x\n",main());追问
这个只是函数的偏移地址吧 段地址呢? 怎么打印出来呢?
追答不知道啦 sorry
追问谢谢 没关系
参考技术A 调试程序时候可以看到函数16位地址的追问我就是想通过打印的方式输出来
参考技术B 你把函数写好后编译一下,然后在反汇编里就能看到 参考技术C 问题太简洁了,不太了解意思C语言之函数指针用法总结
一、函数返回指针值
函数是实现特定功能的程序代码的集合,函数代码在内存中也要占据一段存储空间 (代码区内),
这段存储空间的起始地址称为函数入口地址。C语言规定函数入口地址为函数的指针,
即函数名既代表函数,又是函数的指针(或地址)。
1、函数的返回类型可以是指针类型,即函数返回指针值,其定义形式为:
2、函数返回指针值,需要考虑指针有效性的问题,例如:
这个返回有问题,因为它返回的是函数局部变量a的地址值。当函数调用结束后,
函数局部变量会释放,变成未知对象。在return语句时,&a还是有效的,
但主调函数获得这个地址时已经是无效的。
3、函数返回的分类
①由主调函数传递进去的有效指针值。
②由动态分配得到的指针值。
③0值指针,表示无效指针。
4、例题:编写函数stringstr, 实现strstr函数的查找子字符串功能。
stringstr函数的作用是在string字符串中查找有无与strCharSet相同的字符串。
如果有,返回该字符串在string中的位置的指针,否则返回空指针表示没有相同的字符串。
1 #include<stdio.h> 2 const char *stringstr(const char *string,const char *strCharSet){ 3 const char* p=string,*r=strCharSet; 4 while(*p!=‘