C语言函数-笔记-2016-3-28

1、定义函数:

***只实现特定功能而不需返回值时:可以定义void类型函数,若有返回值定义其他类型

例如eg1中没有语句“return 0;”编译时就会警告:warning C4716: 'max' : must return a value

***一个函数可以调用另一个函数,但是不能在函数体内定义另一个函数

类型   函数名()

{可执行语句}

eg1:无参数

float max(void)

{

printf("Hello world\n");

return 0;

}

void main()

{

max();

printf("这里还有个Hello world\n");

}

类型  函数名(类型 形参1,类型 形参2,..)

{可执行语句}

eg2:有参数

#include<stdio.h>

int max(int m,int n)

{

int t;

t=m>n?m:n;

return t;

}

void main()

{

int a=1,b=2;

printf("较大值为:%d\n",max(a,b));

}


2、全局变量和局部变量

全局变量:作用域为其定义位置起到程序末尾,生存期为程序开始至结束;

局部变量:全局变量和局部变量重名时,局部变量在其作用域内会掩盖全局变量;


3、传值方式将函数实参传给形参;

***形参函数名可以和实参相同,但是形参值的变化不会影响到实参;

***传值方式中return语句只能返回一个值!

***形参的类型和个数必须和实参一致;

eg:

#include<stdio.h>
void swp(int m,int n)
{
int t;
t=m;
m=n;
n=t;
printf("m=%d,n=%d\n",m,n);//输出:m=20,n=10
}
void main()
{
int m=10,n=20;
swp(m,n);//将实参的值传递给形参然后输出形参值,但是实参中m和n的值不会改变
printf("主函数输出结果m=%d,n=%d\n",m,n);//输出:m=10,n=20
}


4、传址方式将函数实参传给形参:

***形参值的变化会影响实参的值;

***实参可以为:变量地址或指针名、一维数组、字符数组或多维数组;

eg1:变量地址为实参

#include<stdio.h>
void f(int *p1,int *p2)
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
printf("形参输出:%d,%d\n",*p1,*p2);//形参输出:20,10
}
void main()
{
int m=10,n=20;
f(&m,&n);//调用f()函数,实参的地址传给形参
printf("实参输出:%d,%d\n",m,n); //实参输出:20,10
}

eg2:数组名(表示数组首地址)为实参

#include<stdio.h>
void bijiao(char a[],char b[])
{
int i=0;
while(a[i]==b[i]&&a[i]!='\0')
i++;
if(a[i]=='\0'&&b[i]=='\0')
printf("两个字符串数组相同\n");
else
printf("NO:incorrect!");
}
void main()
{
char s[20],m[20];
printf("请输入两个字符串:\n");
gets(s);
gets(m);
bijiao(s,m);
}

eg3:字符串作实参(形参应为字符型的指针变量)

#include<stdio.h>

void f(char *s)//此处使用f(char s[])也正确,对比eg2

{

int i=0,n=0;

while(s[i]!='\0')

{

if(s[i]=='s')

n++;

i++;

}

printf("字符串中s的个数为:%d\n",n);

}

void main()

{

char s[50];

gets(s);

f(s);

}


5、函数的嵌套和递归

函数的嵌套:一个函数调用其他函数

eg1:计算1^5+2^5+3^5+...+x^5

#include<stdio.h>
long c(int x)
{
long p=1;
int i;
for(i=0;i<5;i++)
p=p*x;
return p;
}
long s(int x)
{
long s=0;
int i;
for(i=1;i<=x;i++)
s=s+c(i);
return s;
}
void main()
{
int x;
scanf("%d",&x);
printf("输入值为%d,输出5次方之和为:%d\n",x,s(x));
}

函数的递归:一个函数调用本身函数

eg:前N个斐波那契数列之和;

#include<stdio.h>

long f(int n)

{

long a[n];

a[1]=1;

a[2]=1;

a[n]=a[n-1]+a[n-2];

void main()

{ long n;

long s[n];

printf("请输入N的值:%d",n);

scanf("%d",&n);

printf("斐波那契数列前N项之和为:\n");

if(n==1)

s[1]==1;

else if(n==2)

s[2]==2;







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛应用于计算机科学和软件开发的编程语言。它具有强大的功能和灵活性,适用于开发各种类型的应用程序。 C语言专题精讲篇是一个对C语言进行深入学习和讲解的系列文章或课程。它汇总了C语言相关的重要知识点和技巧,旨在帮助学习者更好地理解和运用C语言。 这个专题中的笔记涵盖了C语言的各个方面,包括基本语法、数据类型、运算符、流程控制、函数、数组、指针、结构体、文件操作等。通过系统性的学习和总结,这些笔记可以帮助学习者逐步掌握C语言的核心概念和常用技巧。 在这个专题中,学习者可以学到如何编写简单的C程序,如何使用变量和运算符进行计算,如何使用条件和循环语句控制程序流程,如何使用函数进行代码的模块化,如何使用数组和指针进行数据的处理,如何使用结构体组织复杂数据,如何进行文件的读写等等。 C语言专题精讲篇的目的是帮助学习者全面、深入地了解C语言的各个方面,并能够独立编写和调试简单到中等难度的C程序。通过反复实践和练习,学习者可以逐渐提高自己的编程能力,并为进一步学习更高级的编程语言打下坚实的基础。 总之,C语言专题精讲篇的笔记汇总是一份重要的学习资料,可以帮助学习者系统地学习和掌握C语言的基础知识和常用技巧,为他们未来的编程之路打下坚实的基石。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值