初学者C语言函数问题注意一下这个函数void insert (char *family, char *first, char *address, char *phonenumber, phoneptr head)
{head=newentry (family, first, address, phonenumber,head);}
,你的head是一个什么我不太清楚,但是由于函数是值传递的 , 你的head仅仅是传递了一个值的拷贝而已 , 而里面函数的操作也是对于这个拷贝进行的,而这个函数没有返回值,当你直接调用的时候当然head不会指向任何东西了 , 但是你要是调用head=newentry (family, first, address, phonenumber,head);之后 , 那么因为这个函数有一个返回值 , 虽然和那个的作用是一样的,但是这个函数把返回值直接赋值给了你定义的那个变量,而不是拷贝的变量,所以head就会有指向了,要是要用一个void的函数来实现的,我觉得应该这样子:
void insert (char *family, char *first, char *address, char *phonenumber, phoneptr *head)
{* head=newentry (family, first, address, phonenumber,head);}
要是类型不匹配那你再转换一下,反正就是要吧head的地址传进去,然后再对它的值,一定要是值,因为你传入的也是一个地址的拷贝,如果仅仅对地址操作是没有作用的,只能对地址指向的值的操作才能改变的
初学编程,C语言中的main函数考虑到main函数的特殊性,lz不明白这个问题可以理解 。
main()是省略了返回值类型,C语言会默认认为成main的类型为int , 在main()的函数体内要返回一个值 , 如return 0;
而void main()的返回值是void类型 , 也就是说没有返回值 。这样在main()的函数体内你就不用写return 0;或者return 1;之类的返回语句 。
在一个程序中,可以说你看不出两者的差别,因为main()是C语言的入口点,入口点如果返回了程序也就结束了,因此C语言的这个特性似乎没用 。可没用的话,C语言的设计者为什么要这么做呢?!肯定有用 。
没错,前面我说的是在一个程序中 , 它似乎没用 。可如果一个程序prog2调用另一个程序prog1的话(这里指的是prog2直接调用prog1编译好的可执行文件),那么这个特性就有用了 。因为prog2要知道prog1运行之后的状态 。比如你用C写了一个删除文件的程序(暂且命名为delf),然后用另一个程序去调用delf,那么调用结果怎么样?。空飧鑫募欠裆镜袅耍空馐莍nt main()就会派上用场了 。C语言中默认的main如果返回为0,那么这个程序调用就成功了 , 其他值 , 则为不同的错误代码 。在你的delf程序中 , 如果那个文件删除成功,那么就在int main()中返回0,其他调用delf的程序就知道,噢 , 这个操作成功了 。
在unix/linux系统中的很多命令都是通过这种方式获得运行结果的 。
关于谭浩强的书,我想不用多说,发行量说明了一切 。毕竟第二版在编写的时候还比较早,而第三版根据很多现在的需要进行了改写,内容当然会好些 。鉴于lz是初学C , 其实大可不必在这个问题上浪费太多时间,当你有了更多的项目经验,对这个问题会有更深刻的理解 。
上面我已经给出了main()、int main()和void main()的区别,但建议lz忽略这个差别 , 认为成二者一样,先把C的其他部分学好 。至于只写成main(),我并不推荐,就算编译器通过了 , 这种编程的风格也太不严谨 , 不利于好的习惯的养成 。
C语言基础 函数部分主函数中for (i=0;i!='\0';i)要改成for (i=0;i100;i),scanf ("%c",str[i]);要改成scanf (" %c",str[i]); 。
del_samechar函数中第二个for就不能用i变量控制了,不然第二个for循环完后i就越界了,第一个for就不再执行了还有,控制应该是str[i]!='\0'而不应该是i!='\0' 。
其实把函数 del_samechar写成以下就可以了——
void del_samechar(char str[]){
int i,n;
for(n=i=0;str[j]=str[i];i)
if(str[j]!=str[j-1] || j==0)
j;
}
什么是C语言函数,简单明了让你知道函数是一组一起执行一个任务的语句 。每个 C 程序都至少有一个函数,即主函数main(),所有简单的程序都可以定义其他额外的函数 。
您可以把代码划分到不同的函数中 。如何划分代码到不同的函数中是由您来决定的 , 但在逻辑上 , 划分通常是根据每个函数执行一个特定的任务来进行的 。
C 标准库提供了大量的程序可以调用的内置函数 。例如 , 函数strcat()用来连接两个字符串 , 函数memcpy()用来复制内存到另一个位置 。
函数还有很多叫法,比如方法、子例程或程序,等等 。
C 语言中的函数定义的一般形式如下:
在 C 语言中,函数由一个函数头和一个函数主体组成 。下面列出一个函数的所有组成部分:
以下是max()函数的源代码 。该函数有两个参数 num1 和 num2,会返回这两个数中较大的那个数:
创建 C 函数时,会定义函数做什么,然后通过调用函数来完成已定义的任务 。
当程序调用函数时,程序控制权会转移给被调用的函数 。被调用的函数执行已定义的任务,当函数的返回语句被执行时,或到达函数的结束括号时,会把程序控制权交还给主程序 。
调用函数时 , 传递所需参数,如果函数返回一个值,则可以存储返回值 。例如:
如上把 max() 函数和 main() 函数放一块,编译源代码 。当运行最后的可执行文件时,会产生下列结果:
形式参数就像函数内的其他局部变量,在进入函数时被创建 , 退出函数时被销毁 。
当调用函数时,有两种向函数传递参数的方式:
默认情况下,C 使用传值调用来传递参数 。一般来说 , 这意味着函数内的代码不能改变用于调用函数的实际参数 。
有关C语言上的函数问题想求助一下大侠,我新手int max(int x, int y);//是一个函数声明新手c语言函数,函数在调用之前必须声明 。括号里边是形参
c=max(a, b);//这句语句中新手c语言函数的括号里面是实参新手c语言函数,当函数被调用时新手c语言函数,程序进入调用函数
中,将实参新手c语言函数的值赋给调用函数的形参, 参与运算 。最后返回运算结果给c 。
关于C语言函数声明的问题(新手)#includestdio.h
#define PI 3.14
float zhouchang(float r);//函数声明
floatmianji(floatr);//函数声明
floattiji(floatr);//函数声明
int main()
{
float r;
printf("Input R\n");
scanf("%f",r);
printf("圆的周长:\n");
printf( "%f\n", zhouchang(r) );//函数调用
printf( "圆的面积:\n" );
printf( "%f\n", mianji(r) );//函数调用
printf( "球的体积:\n" );
printf( "%f\n", tiji(r) );//函数调用
return 0;
}
//函数定义
float zhouchang(float r)
{
return 2*PI*r;
}
//函数定义
floatmianji(floatr)
{
return PI*r*r;
}
//函数定义
floattiji(floatr)
{
return PI*r*r*r*4/3;
}
//如果你这段代码是从书上抄的,我想给你两个建议:
//第一:以后抄代码认真一点,边抄边理解语意!
//第二:请把这本书扔了,换一本!
【新手c语言函数 c语言函数菜鸟教程】新手c语言函数的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于c语言函数菜鸟教程、新手c语言函数的信息别忘了在本站进行查找喔 。
推荐阅读
- 怎么制作word模板,word怎么自己做模板
- 关于gis分析微信用户人口密度的信息
- 宿舍游戏开发,学校宿舍游戏
- .net桌面程序内嵌到h5,net core桌面应用
- vb.net平均值函数 vb编程计算平均值
- 电视盒的万能遥控器怎么用,电视盒没遥控器怎么用
- 幼儿园益智游戏课教案,幼儿园益智游戏活动设计
- 崇州网红直播聚集地,崇州网红拍照地方在哪
- c语言分主函数字符串逆序 c语言将主函数中输入的字符串反序存放