C语言函数声明函数首部的问题。

7. 对函数形参的说明有错误的是(C)。
A) int a(float x[],int n) B) int a(float *x,int n)
C) int a(float x[10],int n) D) int a(float x,int n)
为什么c不可以,还有 函数声明,函数首部各有啥区别啊。
我知道在函数声明的时候数组应该是弄成指针的。

我也来 说几句。。

标准编译器 对函数的调用 都要
先申明 才能 调用
(生产的时候就这样设定的)。。我推荐试用
大点的 vs2005,vc2000.
小点的 Dev-cpp ,Turboc 3.0 (2.0 不支持鼠标有点 麻烦)

这里 就涉及: 申明和定义之间的区别。

申明-- 不开辟内存,仅仅告诉编译器,申明的部分存在,要预留一点空间。
定义-- 开辟内存。
申明 属于 预编译范畴的。最好写在头文件中(楼主,自定义头文件学了没有啊?)(申明都写在头文件中,只是一种好的编程习惯)

因为 在编译的时候,编译器先处理一些特殊数据(宏定义,函数的申明,变量的申明),在这个过程中,编译器 通过申明 可以预测整个定义需要的内存大小,并且 把这些大小预留起来,留给定义的时候使用(因为虽然定义,但是在 main函数里面没有调用,一样的不分配内存)。

如果不事先申明,直接定义,有可能会造成系统崩溃,出现内存不足,不能分配。 然而现在内存都是1G左右了,所以一般空间都足够,所以你也可以不申明直接定义函数。
但是一旦内存紧张,就会出错,而且程序简洁性就很低。(不看到定义,还不知道原来还定义了这么一个函数!!!)

还有 变量也一样,标准的都是 先申明在定义。
extern int i; //申明
int i=0; //定义并初始化为0
int i; //定义
.。。。。。。。。。。。。。。。。。

所以 从现在其要养成良好的编程习惯

先申明,在定义。
申明最好都放在 一块,并且都在头文件中(为了便于管理)。追问

这些明白了 那请问那道题目怎么解释啊

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-01-02
对于数组做形参,都会转为数组的首地址;
对于a(int x[]),a(int *x),a(int x[4])效果都一样,
float s[12] = { 1, 2, 3, 4, 5, 6 };
printf("0X%x,%f\n",s, s[0]);
fun(s, 0);
fun1(s, 0);
fun2(s, 0);
return 0;
}
int fun(float x[4], int n){
printf("0X%x,%f\n", x,x[0]);

}
int fun1(float x[], int n){
printf("0X%x,%f\n",x, x[0]);

}
int fun2(float* x, int n){
printf("0X%x,%f\n",x, x[0]);

}

追问

那请问这个C选项为什么不对呢

C语言,函数原型,函数首部,写的时候有没有分号?
1 函数的声明。函数的声明是需要带分号的。函数声明是用来扩展函数的作用域。比如被调函数在其它文件,或者在同一个文件中却是在主调函数的下面,那么就需要在调用前声明。声明的格式是 ret_type func_name(arg_list);这个是必须带分号的。2 函数的实现。当定义一个函数的时候,不可以带分号。但后续...

C语言,什么是函数首部?
int fun(int a, int b) \/\/ 函数首部\/\/ { }中的内容就是函数体{ return a>b ? a : b; \/\/ 函数返回值}

c语言关于求一个数首部的函数
sscanf(s+1, "%d", &a); \/\/从字符串中提取整数,忽略第一位 return a;}

c语言关于求一个数首部的函数
把整数中每位数分离出来当然可以求,当然直接用库函数很简单 int f(int a){ char s[16];sprintf(s,"%d",a);\/\/把a写入字符串 sscanf(s+1,"%d",&a);\/\/从字符串中提取整数,忽略第一位 return a;}

c语言中函数首部由哪三部分组成
函数名,参数列表 例如 int add(int x , int y) \/*返回两个整数的和*\/ { return (x+y);} 如果函数没有返回值,返回值类型部分可以省略或使用void关键字【推荐使用void】如果函数没有参数,参数列表部分可以不写,但函数名后的小括号不可省略。函数可以有多个参数,要求用逗号隔开。

C语言出现expected identifier or '('是什么意思?
在C语言编程中,遇到"expected identifier or '('"的错误消息意味着编译器期待找到一个标识符(如变量、函数名或结构体成员)或者一个左括号'(',但当前的代码位置并未提供。错误出现在代码文件q2\/frac.c的第32行。具体问题出在函数`fr_reduce`的定义上,缺少了函数首部。正确的部分应该像这样:`...

在C语言中,一个函数一般由两个部分组成,它们是——和——
在C语言中一个函数一般由两个部分组成一个是函数头,一个是函数体。函数体是编程语言中定义一个函数功能的所有代码组成的整体。函数体是用花括号括起来的若干语句,他们完成了一个函数的具体功能。函数体内的前面是定义和说明部分,后面是语句部分。函数声明与函数体放在一起组成了函数定义。函数头是指...

C语言的函数调用规则
请问C语言函数的调用规则是什么,例如主函数main、 函数A 、函数B,这3者的顺序能否打乱,可以打乱,依个人习惯。如果 A函数放最前,能否直接调用B函数?还是只能后面的函数调用前面的函数,还是说只要在A函数中声明B函数就能够调用后面的B函数。?A调B,或B调A都可以,如果B在A后,B可直接调用A,...

函数返回值的类型和函数首部定义的类型一致吗?
c语言规定,函数返回值的类型是由函数首部定义的类型决定。函数返回值应与首部定义的类型一致,如若不一致,则自动将返回值强制转换为函数首部定义的类型。没有定义类型时默认为int型。也就是说你的函数是什么类型,返回值就是什么类型。比如:函数定义 int fun(int a,char b)返回值就是整型 函数定义 ...

C语言出现expectedidentifieror'('是什么意思?
cvoidfr_reduce(structfrac*a){\/\/...}{ints;s=a+b;return(s);}正确的是,应该在`{}`的前面添加函数首部,即函数声明,如下:cintsum(inta,intb){ints;s=a+b;returns;}C语言是一种底层开发的通用编程语言,它以简洁的方式编译,直接操作内存,并产生直接执行的机器码。尽管功能强大,可以...

相似回答
大家正在搜