c语言函数的声明方式 c语言函数的声明,调用和定义( 二 )


简单区分:
定义在函数之外的就是全局变量 , 这个变量所有函数都可以直接使用 , 并且共用同一个地址 。任意函数修改了变量值 , 其他函数调用也会变 。
定义在函数之内的就是局部变量 , 局部变量只属于该函数 , 其他函数即使定义了同样名字的变量,这两个变量也不同地址,互不相干 。
比如:
int a;//这就是全局变量,作用域下所有函数共用
int main()
{
int b;//这就是局部变量,只在本函数有效,如果想在调用fun函数时让fun也使用该变量,需要把这个变量的地址作为参数传递过去 。
printf("%d",b);
return 0;
}
注意:c语言中允许局部变量和全局变量同名 , 但是同名的局部变量会屏蔽全局变量,实际代码避免同名 。
关于函数传值和传址:
如函数void fun(int a,int *b){..........};这里形参a 和*b,分别表示一个值和一个地址
所以在调用该函数时,比如:
int main()
{
int c,d;
fun(c,d);//这里调用就对应上面形参类型,第一个参数传递了c的值(传值),第二个参数传递了d的地址(传址),这里c和d,叫做实参 。当fun函数运行时改变了a和b指向地址的值,对应main函数中c的值不变,d的值改变 。
return 0;
}
顺带一说:局部变量,在函数运行结束后会自动释放,所以想把局部变量地址作为返回值 , 需要用malloc函数申请 。(这里看不懂可以暂时忽视)
C语言中函数的定义格式是什么,函数原型声明的语法格式?函数定义就是规定函数的格式与功能 。
函数声明就是在函数调用之前进行的一种说明 。
下面举例说明两者的语法格式c语言函数的声明方式:
#includestdio.h
int fun(int a, int b);// 函数的声明
void main()
{
int x=1, y=2;
int c;
c = fun(x+y);
}
// 下面的fun函数就是函数的定义
int fun(int a, int b)
{
return a+b;
}
注:如果被调函数(上例中为fun函数)写在调用处之前c语言函数的声明方式,可以不声明(本例是现在调用处 (c = fun(x+y);)之后) 。
C语言函数声明我也来 说几句 。。
标准编译器 对函数的调用 都要
先申明 才能 调用
(生产的时候就这样设定的) 。。我推荐试用
大点的vs2005,vc2000.
小点的Dev-cpp ,Turboc 3.0 (2.0 不支持鼠标有点 麻烦)
这里 就涉及:申明和定义之间的区别 。
申明-- 不开辟内存 , 仅仅告诉编译器 , 申明的部分存在 , 要预留一点空间 。
定义-- 开辟内存 。
申明 属于 预编译范畴的 。最好写在头文件中(楼主,自定义头文件学c语言函数的声明方式了没有啊c语言函数的声明方式?)(申明都写在头文件中,只是一种好的编程习惯)
因为 在编译的时候 , 编译器先处理一些特殊数据(宏定义,函数的申明,变量的申明),在这个过程中,编译器 通过申明 可以预测整个定义需要的内存大?。⑶?把这些大小预留起来,留给定义的时候使用(因为虽然定义,但是在 main函数里面没有调用,一样的不分配内存) 。
如果不事先申明 , 直接定义,有可能会造成系统崩溃,出现内存不足,不能分配 。然而现在内存都是1G左右了,所以一般空间都足够,所以c语言函数的声明方式你也可以不申明直接定义函数 。
但是一旦内存紧张,就会出错,而且程序简洁性就很低 。(不看到定义,还不知道原来还定义了这么一个函数c语言函数的声明方式!c语言函数的声明方式?。。?