鱼C论坛

 找回密码
 立即注册
查看: 2310|回复: 9

关于C中函数存储的问题,希望指导!

[复制链接]
发表于 2012-2-19 14:15:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题:
#include <stdio.h>

int fun(int a)   //请问函数存储在内存空间中,是以静态存储的还是以动态存储?
{
        a = 1+1;
        return a;
}
static int fun1(int a)   //以static定义静态函数fun1与上面fun函数的定义有什么区别?
{
        a = 1+1;
        return a;
}
/* 补充提问:以static定义静态函数 它的作用域是是否跟静态全局变量一样,作用域只是在源文件上 */

static int fun1(int a);  //在主函数外对"函数原型"进行申明 与在主函数内对"函数原型"有什么区别

int main (void)
{
        int fun(int a);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-19 14:54:11 | 显示全部楼层
fun1 的话 在其他的.C文件中(包含该.H文件) 不能调用 除非使用extern

在该文件中 只能在fun1函数下面的函数才能调用该函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-19 19:06:26 | 显示全部楼层

   谢谢回答在主函数外对"函数原型"进行申明 与在主函数内对"函数原型"有什么区别

??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-19 19:15:59 | 显示全部楼层
/鸡蛋饼. 发表于 2012-2-19 19:06
谢谢回答在主函数外对"函数原型"进行申明 与在主函数内对"函数原型"有什么区别

??

执行起来没什么区别。
只是有些函数代码太大,为了维护方便,必须得弄到主函数外。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-19 19:39:08 | 显示全部楼层
Mr.C 发表于 2012-2-19 19:15
执行起来没什么区别。
只是有些函数代码太大,为了维护方便,必须得弄到主函数外。

是这样呀   。。谢谢版主大大!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-19 20:13:38 | 显示全部楼层
static说明符放在函数前说明函数作用域是文件作用域。。
别的文件无法调用
作用域是声明开始到文件末尾
声明只有在定义上方才有意义
所以你写的两个声明都没意义的
函数定义就是声明和定义。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-19 21:47:47 | 显示全部楼层
如题:
#include <stdio.h>

int fun(int a)   //请问函数存储在内存空间中,是以静态存储的还是以动态存储?
{
        a = 1+1;
        return a;
}
函数在内存中是静态存储的,但这里的静态不意味着它是static函数,static修饰函数的时候表示该函数仅本.c文件可使用


static int fun1(int a)   //以static定义静态函数fun1与上面fun函数的定义有什么区别?
{
        a = 1+1;
        return a;
}
区别就是前面那个函数本程序中任何的.c文件都可调用,这个static函数仅本.c文件可调用

/* 补充提问:以static定义静态函数 它的作用域是是否跟静态全局变量一样,作用域只是在源文件上 */
是的


static int fun1(int a);  //在主函数外对"函数原型"进行申明 与在主函数内对"函数原型"有什么区别

int main (void)
{
        int fun(int a);
        return 0;
}

区别在于:
在主函数外对"函数原型"进行申明 则本文件的所有函数都可以调用该函数
在主函数内声明,本文件内只有主函数可调用该函数,因为其它函数“看不见”该函数的声明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2012-2-19 22:10:42 | 显示全部楼层
仰望天上的光 发表于 2012-2-19 21:47
如题:
#include

谢谢指导!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-19 22:11:01 | 显示全部楼层
ccqiji 发表于 2012-2-19 20:13
static说明符放在函数前说明函数作用域是文件作用域。。
别的文件无法调用
作用域是声明开始到文件末尾

谢谢指导 !!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2015-8-17 07:53:41 | 显示全部楼层
咱们码农有力量,嘿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 07:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表