C语言基础——函数

函数

功能、参数、返回值

格式:

数据类型 函数名(形参列表)
{
代码段;
return 变量名或常量或表达式;
}
注意return的返回值类型要和定义函数时的数据类型保持一致;
不需要返回值时,数据类型可以用void表示

声明:

数据类型 函数名();
定义的函数可以直接写在主函数上边,也可写在下边,注意:写在下边时,要提前声明

定义的四种形式:
1.不需要参数,也不需要返回值
void(){}
2.需要参数,不要返回值
void(int a,int b){}
3.不要参数,要返回值
int (){int a ; return a}
4.要参数,要返回值
int(int a, int b){return c;}
形参:函数定义时,定义的形参变量,是形式上存在的参数,只有在调用函数时才开辟内存空间。
实参:调用函数时,实际传递的值。

函数传参

值传参

单向传递,把实参传递给形参使用,改变形参实参不受影响
(把值复制一份,进行修改,不影响原来的内容)

void fun(int a,int b)
{
a+=3;
b+=1;
}
mian(){
int c=1,d=0;
fun(c,d);
printf("%d %d",c,d);//c=1 d=0  值未被修改
}

地址传递

双向传递 修改形参,实参会一起改变
(把变量的地址传递过去,然后通过地址间接修改原内容)
通过指针或者数组

注意:不定义变量,而是直接赋值如fun(“abc”);
“abc”:存在常量区,其数据不能修改

开辟堆区空间

malloc free
#include <stdlib.h>
*void malloc(size_t size);
功能:开辟堆区空间
参数:开辟堆区空间的大小
返回值:
成功:开辟堆区空间的首地址
失败:NULL
*void free(void ptr);
功能:释放堆区空间
参数:要释放的堆区空间首地址
返回值:无
注意free()之后,开辟空间虽然释放了,但指针扔存在指向首地址,所以要指NULL

string函数族<string.h>

1.strcpy(string p1,string p2):p2从p1首位置开始粘贴 (被覆盖,不管长短,都被覆盖,因为p2的‘\0’也被复制过去了,所以输出时,到‘\0’结束)
strncpy(string p1,string p2,n)p2的前n个在p1首位置粘贴
(不复制到‘\0’,就会输出后面的字符)
2.strcat(string p1,string p2)p1后链接p2
strncat(string p1,string p2,n),p2的n个字符链接到p1后
注意不要越界
3.strcmp(string p1 ,string p2) 比较两字符串是否相同.区分大小写
stringcasecmp(string p1 ,string p2)不区分大小写
stringncmp(string p1 ,string p2,n)比较前n个
注意比较时,依次从首地址比较字符大小,若p1>p2则输出1,小于输出-1,等于输出0;
4.strchr(string p,char c)查找字符第一次在字符串中位置返回地址(%p),通过返回位置-首位置得到字符所在位置
strrchr(string p,char c)查找字符最后一次在字符串中位置返回地址
5.strstr(string p1,string p);返回子串所在位置(%p)也可以-初位置到得整形位置
6.strlen()
#include <string.h>
size_t strlen(const char *s);
功能:计算字符串实际元素个数
参数:字符串的首地址
返回值:字符串实际元素个数

递归函数

递推阶段:从原问题出发,按递归公式从未知到已知,最终到达递归终止条件(只需了解)
回归阶段:按递归的终止条件求出结果,逆向逐步带入递归公式,回到原问题求解

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值