一、函数的基本用法1.函数基本信息函数是指一个完成特定功能的代码模块; 一般形式: <数据类型> <函数名称>(<形式参数列表>) { 语句; return <返回值>; } //在函数声明中,形参名可以省略,但参数类型不能省略; doubleabc(doublex,intx); doubleabc(double,int); //利用函数求次幂 #include<stdio.h> intvalue(intx,intn) { intsum=1; for(inti=0;i<n;i++) { sum=sum*x; } returnsum; } intmain() { inta,b; printf("please a b:\n"); scanf("%d%d",&a,&b); printf("VALUE=%d\n",value(a,b)); return0; } ![]() 查看预处理文件 gcc -E xxx.c -o xxx.i --->vi xxx.i 2.函数的参数传递1.复制传递(值传递)尽量使用在又返回值中。 2.地址传递(指针传递)可使用在无返回值的函数中。 //通过函数完成交换数据的功能 #include<stdio.h> voidswap(int* ,int*); intmain() { inta,b; printf("input two value to swap:\n"); scanf("%d%d",&a,&b); swap(&a,&b); printf("a=%d\tb=%d\n",a,b); return0; } voidswap(int*a,int*b) { intt; t=*a; *a=*b; *b=t; } ![]() 3.数组作为参数//求一维数组的和#include<stdio.h> intsum(int*,int); intmain() { inta[]={1,2,3,4,5,6,7,8}; intn=sizeof(a)/sizeof(int); printf("SUM=%d\n",sum(a,n)); return0; } intsum(int*p,intn) { intsum=0; for(inti=0;i<n;i++) { sum=sum+*p; p++; } returnsum; } 3.指针函数指针函数是指返回值是一个指针的函数 一般格式: <数据类型> *<函数名称>(参数列表) { 语句; return 指针; } 返回值:全局变量的地址 static变量的地址 static char str[10]; 字符串常量的地址 char *p[]="hello"; //模仿连接字符串 #include<stdio.h> char*stringcpy(char*dest, constchar*src); intmain() { chars1[50]="Hello "; chars2[]="JHK"; printf("LINK=%s\n",stringcpy(s1,s2)); return0; } char*stringcpy(char*dest, constchar*src) { char*r=dest; while(*dest) { dest++; } while(*src) { *dest=*src; dest++; src++; } *dest='\0'; returnr; } ![]() 4.递归函数在函数体中,直接或间接调用函数本身。 //求n的阶乘 #include<stdio.h> intcimi(int); intmain() { inta; printf("input:"); scanf("%d",&a); printf("%d!=%d\n",a,cimi(a)); return0; } intcimi(inta) { intsum=1; if(a==1||a==0) { returnsum; } else { sum=a*cimi(a-1); returnsum; } } ![]() 5.函数指针函数指针存储的是函数的地址,也就是函数的入口地址; 形式: <数据类型> (*<函数指针名称>)(<参数列表>) //函数指针的使用; #include<stdio.h> intadd(inta,intb) { returna+b; } intmain() { intm=15,n=15; int (*p)(int, int );//函数指针的声明 p=add; printf("%d\n",add(m,n)); return0; } 好处:可以指向返回值和参数类型相同的不同函数。 用处:线程创建--pthread,以及qsort; ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:行走在人世间的小A,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |