<1>函数声明
最近看C语言,很迷惑,有些地方有函数声明有些地方没有。
查了下教材,做下小结,笔抄写一遍,网上记一遍,备忘!
有以下三种情况不用函数声明,可以直接调用:
1.被调函数返回类型为整形或者char型,系统会自理。
举例:
//代码1
#include <stdio.h>
int main(){
int a=30;
double d=4.4334;
printf("a=%d",call(a));
return 0;
}
int call(int d){
printf("HelloWorld\n");
return d;
}
正确。如果将call函数的返回类型改为double呢?
//代码2
#include <stdio.h>
int main(){
int a=30;
double d=4.4334;
printf("d=%f",call(d));
return 0;
}
double call(double d){
printf("HelloWorld\n");
return d;
}
gcc表示对call函数的类型很迷惑很纠结~
D:\prj\core_c>gcc demo.c -o demo.out
demo.c:8:8: error: conflicting types for 'call'
demo.c:5:16: note: previous implicit declaration of 'call' was here
2.被调函数定义在主函数之前。
上面的代码2的call方法在在main之前,就不会有问题了。
3.在定义所有函数之前,先对调用函数做了声明。
//代码4
#include <stdio.h>
double call(double d);
int main(){
int a=30;
double d=4.4334;
printf("d=%f",call(d));
return 0;
}
double call(double d){
printf("HelloWorld\n");
return d;
}
相当于做了外部声明。
<2>形参。
举例:
(1)函数的声明,可以省去变量名。
int getMax(int a,int b);
//可以省去变量名,方便编译系统差错:
int getMax(int,int);
(2).宏定义时候的形参不需要类型,不用给它分配内存。
#define P(d) printf("%d",d)
初学者笔记。
分享到:
相关推荐
针对目前 C 语言教学中长期忽视变长形参列表函数知识点的问题,本文分析了变长形参头文件 <stdarg.h> 中声明的 va_list 变量类型和 va_start 、 va_arg 和 va_end 这 3 个宏的基本使用方法,在此基础上,以实例的方式...
这样的函数声明其意义就是一个参数 void(没有参数)的函数。然而今天在看C++的时候突然看到这么一句: 对于带空参数表的函数,C和C++有很大的不同。在C语言中,声明 int func2(); 表示“一个可带任意参数(任意数目,...
而函数的声明的作用则是把函数的名字,函数类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时进行对照检查(例如,函数名是否正确,实参与形参的类型和个数是否一致),它不包括函数体。——谭浩强 ...
C中的参数传递 本文尝试讨论下C中实参与形参的...//函数声明 change(n); printf(函数调用后实参n的值:%d,地址:%#x\n, n, &n); return 0; } void change(int i){ printf(形参i的值:%d,地址:%#x\n,i,&i); i++
形参和实参只是名字相同,各自占有各自的内存空间和生存周期,因此他并不能改变主调函数中的变量。 3、地址参数 传址调用:传送的是变量的地址,尽管主函数和被调函数各自在自己的变量上操作,但他们的地址是
C语言函数是程序中对分解与抽象思想的实现。C语言把大段的程序代码按照功能分解开,体现出对重复使用的程序段的抽象。 例:求任意两个正整数的最大公约数(GCD)和最小公倍数(LCM)。 /*求最大公约数用辗转相除...
将10个整数按由小到大的顺序排列 #include using namespace std;...//函数声明 int a[10], i; cout << enter xss=removed>> a[i]; cout << endl; select_sort(a,10); //函数调用,数组名作
现在给大家介绍下 有默认参数的构造函数: 大家知道函数获取形参的时候是通过函数调用时在实参里获得的,因此我们必须保证 实参的个数 和 形参的个数必须...// 函数声明 并定义默认参数w=3; int main(){ int c=4;
在 C 或 C 中与委托最接近的是函数指针,但函数指针只能引用静态函数,而委托可以同时引用静态方法和实例方法。在后一种情况中,委托不仅存储对方法入口点的引用,还存储对调用其方法的对象的引用。与 C 函数指针...
函数函数声明基本声明每一个函数都会有函数名称,一组形参、可选的返回参数列表和函数体Go函数入参类型声明与C、Java均不相同,参数名称在前,而参数类型在后,并且
那么,我们在C语言的结构体中,只能通过定义函数指针的方式,用函数指针指向相应函数,以此达到调用函数的目的。 函数指针 函数类型 (*指针变量名)(形参列表);第一个括号一定不能少。 “函数类型”说明函数的返回...
“新概念C语言”突破了以往任何一种语言教材的旧的模式,将教学内容分为入门篇和提高篇两个篇章。在入门篇中只引进程序设计必要的语法现象,达到快速入门。激发兴趣的目的。在入门篇和提高篇之间插一个强化上机实验...
《明解C语言 第3版 入门篇》图文并茂,示例丰富,第3版从190段代码和164幅图表增加到205段代码和220幅图表,对C语言的基础知识进行了彻底剖析,内容涉及数组、函数、指针、文件操作等。对于C语言语法以及一些难以...
3.1.7 全局函数和静态函数 66 3.2 内存四区 66 3.2.1 代码区 67 3.2.2 静态区 67 3.2.3 栈区 67 3.2.4 栈溢出 68 3.2.5 堆区 68 3.3 堆的分配和释放 70 3.3.1 malloc 70 3.3.2 free 70 3.3.3 calloc: 70 3.3.4 ...
根据C语言的发展和计算机教学的需要,作者在《C程序设计(第三版)》的基础上进行了修订。本书按照C语言的新标准C 99进行介绍,所有程序都符合C 99的规定,使编写程序更加规范;对C语言和程序设计的基本概念和要点讲解...
7.4对被调用函数的声明和函数原型 7.5函数的嵌套调用 7.6函数的递归调用 7.7数组作为函数参数 7.7.1数组元素作函数实参 7.7.2数组名作函数参数 7.7.3多维数组名作函数参数 7.8局部变量和全局变量 ...
3.3 详细设计 密码模块: 注释 Y (是) N(否) Y N 删除模块: 注释 注释 Y N Y N 3.4 编写过程中遇到的问题及解决办法 (1)在调试函数的过程时,一般高级语言要求函数实参与形参个数与类型一致,但 在C语言编译...
在C++中,多了一个C语言没有的引用声明符&,如上,m就是n的引用,简单的说m就是n的别名,两者在内存中占同样的位置,不对m开辟新的内存空间,对m的任何操作,对n来说是一样的。 对于引用,有以下三条规则: (1)...
o 2.4 extern 在函数声明中是什么意思? o 2.5 关键字 auto 到底有什么用途? o 2.6 我似乎不能成功定义一个链表。我试过 typedef struct { char *item; NODEPTR next; } *NODEPTR; 但是编译器报了错误信息。难道...
3.3 详细设计 密码模块: 注释 Y (是) N(否) Y N 删除模块: 注释 注释 Y N Y N 3.4 编写过程中遇到的问题及解决办法 (1)在调试函数的过程时,一般高级语言要求函数实参与形参个数与类型一致,但在C 语言编译...