扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
包括返回值,函数名,形参列表和函数体四个部分。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、虚拟主机、营销软件、网站建设、天元网站维护、网站推广。
例如 :
int findmin(int a[],int n){
//函数体
return min;
}
以上函数int 是返回值,findmin是函数名, int a[] int n是形参列表
首先,我们知道char a[M]是一个数组,其中每个元素a[i]都存放了一个char型字符。
*p 是一个指针,说白了就是存放了一个内存地址。而指针也可以像字符一样编成一组,叫做指针数组。(*ss)[M] 就是一个指针数组,说白了就是一组内存的地址。
在这段程序中,这一组内存的地址分别指向哪里呢?答案是,每一个指针都指向了某个字符串的首地址。也就是说,(*ss)[i]就是第i个字符串的首地址。
那么,第i个字符串的第k个字符是什么呢?就是ss[i][k]了。
就像你说的,这样不就是二维数组了吗?没错,完全可以把(*ss)[M]当做二维数组来理解。数组的维数不是看它有几个方括号的。
在声明过程中,数组a[M]的声明,事实上是声明了一个不允许修改的指针a,并在a所指向的内存中开辟出M个数字的位置。因此,a[] 与 *a 都可以表示一维数组,a[i] 与 *(a + i) 则代表了数组中相同的元素。同理,(*a)[] 和 a[][]也都可以表示二维数组。
只要完全理解了(*ss)[i]的意义,理解这几行程序就不是问题了。
声明部分
定义部分//或者说算法
C语言中函数包括函数首部和函数体,函数首部又包括函数类型、函数名、形参、有的还包括存储方式等,函数体是函数实现的具体功能。
在程序中出现函数名时,要注意区分以下三种情况:
1. main函数中的int max(int x,int y); 是函数的声明,一般格式为 返回值 函数名(参数类型 参数);
2. max(a,b)为函数的调用,一般格式为 函数名(参数);
3. 后面的max(int x,int y){ ...}是函数的定义,一般格式为 返回值 函数名(参数类型 参数){函数体}
c语言规定,在一个函数定义之前调用它,需要提前进行声明。
原因是,如果没有声明函数,当程序运行到max(a,b)时,由于后面的函数定义还没有被读到,所以计算机并不知道max是个什么东西,程序就会出错。
如果将函数定义提到main函数的前面,就无需进行声明了,程序也不会报错。
在主函数里的是实参,在子函数里的是形参。因为在真正执行的时候是把实参传递给形参来执行的,所以实参才是实际的参数。
比如:
int jjj(int a, int b)
void main()
{
int x, int y;
jjj(x, y);
}
a、b是形参,x和y是实参。
而调用与被调用是相互的,
int aa(){...}
int bb(){...;aa();...}此时,bb函数调用了aa函数,即aa被bb函数调用。
int count;
void function()
{
int a=0;//初始化a
int b=0;//初始化b
count=0;//外部变量初始化
//...
}
{}中的就是函数体
初始化就是使用前的赋值,一般在定义时赋值
初始化的对象局部变量或者全局变量
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流