关于C语言 定义函数的类型问题

关于C语言 定义函数的类型问题,第1张

1,可以不定义,但是有默认类型
2,一个函数中的多个形参是可以不一致的
但是形参和实参对应的类型要一致
3,如果要定义函数类型的话,函数类型,和形参类型没有直接关系,而是决定返回一个什么类型的结果
比如 定义一个函数, FF(int a,ploat b,char c,) 这样没有定义函数类型,形参不相同,这样--C默认是整形吧

C语言的函数定义格式是:
函数类型 函数名称 ( 参数列表 )
{
//函数体
}
函数声明,不是说明的格式是“函数定义格式”的第一行,然后加 “;”,即:
函数类型 函数名称 ( 参数列表 );
特别地,在函数声明中的参数列表中,不需要给出具体的变量名称,但必须给出每个变量的类型。

的确是 c
int _cdecl fff(float x) 这是 C++编译器给的
在C中 函数省略默认为int型。
函数的定义形式如下:
函数返回值申明 函数名(参数声明表)
{
声明和语句
}
最简单的函数可以是:
f()
{ }
函数返回值申明可以省略,如果省略则默认为int型。
没有return函数,并不意味着函数非法,在运行到}时同样会返回一个值,只是你没有用变量接收它罢了。

我提供一个思路:
需要用到栈。把字符数组扫描一遍,遇到左括号‘(’或左大括号‘{’时就把它们压入栈中,遇到右括号‘)’或右大括号‘}’时看看栈顶元素是不是')'或者'}',若是则把栈顶元素d出,继续扫描数组后面的元素;否则终止,可以断定不是函数。
同时还需要判断一点,就是其中有一个右括号‘)’后面的是左大括号‘{’,中间允许有空格,但不允许有别的字符。
如果数组扫描完了而且也满足第二点,就判定是函数。
我这方法只是单纯从语法括号上判定,仍有不妥,仅供参考。

在c语言中用没有函数判定一个变量的类型,可以使用sizeof来判断变量大小。

示例:

#include <stdioh>

#include <stdlibh>

int main(int argc,char argv)         //主程序

{

//对C语言内置类型的所占字节数的测试

printf("size of char is: %d\n",sizeof(char));       //字符型数据所占字节数 、

printf("size of short is: %d\n",sizeof(short));     //短整形数据所占字节数

printf("size of int is: %d\n",sizeof(int ));        //整形数据

printf("size of short int is: %d\n",sizeof(short int)); //短整形

printf("size of long int is: %d\n",sizeof(long int));    //长整形数据

printf("size of float is: %d\n",sizeof(float));          //浮点型数据

printf("size of double is: %d\n",sizeof(double));        //双精度数据

//对字符及字符串数组所占字节数的测量

char a[] ={'a','b','c','d','e'};

printf("size of a[] is: %d\n",sizeof(a));               //输出数组a[]所占字节数

char b[]={"abcde"};                                     //初始化字符串b

printf("size of b[] is: %d\n",sizeof(b));               //数组b[]

char c[][3]={{'a','b','c'},{'d','e','f'},{'g','h','i'},{'j','k','l'}};  //初始化二维字符型数组

printf("size of c[][] is: %d\n",sizeof(c));                             //二维数组c所占字节数

printf("size of c[0] is: %d\n",sizeof(c[0]));                           //二维数组中的某行所占的字节数,例如第0行

printf("size of c[0][0] is: %d\n",sizeof(c[0][0]));                     //某行某个元素,例如第0行第0个元素

//对指针所占字节数的测量

char p=0;

printf("size of p is: %d\n",sizeof(p));                       //字符型指针

system("pause");

return 0;

}

扩展资料

使用sizeof()计算数组长度

将sizeof用于 expr是并没有计算expr的值。特别是在sizeof p中,指针p可以是一个无效地址,因为不需要对p做解引用 *** 作。

对char类型或值为char类型的表达式做sizeof *** 作结果为1。对引用类型做sizeof *** 作,将返回存放此引用类型对象所需的内存空间大小。

对指针做sizeof *** 作,将返回存放指针所需的内存大小,注意,如果要获取该指针指向对象的大小,则必须对该指针进行解引用。对数组做sizeof *** 作等效于对其元素做sizeof *** 作的结果乘上数组元素的个数。

因为sizeof返回整个数组在内存中的存储长度,所以用sizeof数组的结果初一sizeof其元素类型的结果,即可求出数组元素的个数:int sz = sizeof(ia)/sizeof(ia);

通常将8位的块作为一个字节,32位或4个字节作为一个 “字”。一般的short为半个机器字长,int为一个机器字长。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12604322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存