C语言学习4(函数)

本文介绍了C语言中的回文数判断、函数的基本概念、参数传递方式以及本地变量的作用域和生存期。通过示例代码解释了如何定义和调用函数,以及值传递的特点。同时强调了C语言中类型转换的不严谨性可能导致的问题,并通过swap函数说明了变量空间的独立性,指出局部变量只在其定义的作用域内有效。
摘要由CSDN通过智能技术生成

回文数

// 回文数放数组里
int main(){
	int i=0,j,k=1,num,a[20];
	scanf("%d",&num);
	while(num){a[i]=num%10;num/=10;i++;}
	for(j=0;j<i/2;j++){if(a[j]!=a[i-j-1]){k=0;break;}}
	k?printf("是回文"):printf("不是回文"); 
} 

定义

// 函数是一块代码,接收(零个或多个)参数,做一件事情,返回(零个或一个)值
int sum(int begin,int end){
}
// 括号里void是明确告诉编译器,这个函数不接收任何参数
void f(void)

// 调用函数时,即使没有参数,调用的时候也需要()

// return做两件事情:
// 1.一旦遇到return,函数就停止了,不再往下执行
// 2.如果return后面有值,就送回一个值
// 函数返回的值可以赋给变量,也可以把这个值再传递给函数,甚至还可以丢掉

函数的声明

当自己写的函数在main函数后边时,要先进行声明

#include<stdio.h>
int max(int a,int b);// 先进行声明 

int main() {
	printf("%d",max(21 ,45));
}
// definition
int max(int a,int b) {
}
// 函数头加个分号就是原型声明
// 函数的原型声明里可以不写参数的名字
void sum(int,int);

参数传递

C语言调用函数,只有值传递
调用函数时必须传给它数量、类型正确的值
C语言在这块不严谨,传的值和参数的类型不匹配时,编译器会悄悄的替你把类型转换好。但这可能会出错
C++/Java在这方面比较严格

swap(a,b);
printf("a=%d,b=%d\n",a,b);
// 每个函数有自己的变量空间,函数的参数也位于这个独立的空间中,和其他函数没有关系
void swap(int x,int y) {
	int t=x;x=y;y=t;
}

本地变量

函数的每一次运行就会产生一个独立的变量空间,在这个空间中的变量是函数的这一次运行所独有的,称作本地变量
定义在函数内部的变量就是本地变量
本地变量就是局部变量,写在函数的参数表里的参数也是本地变量

生存期和作用域

生存期: 什么时候这个变量开始出现了,到什么时候它消亡了
作用域: 什么范围内可以访问这个变量
对于本地变量,这两个是一样的: 大括号内

本地变量/局部变量:
定义在块内,函数块,语句块,大括号内
生存期和作用域都在这个块内
局部变量没有默认值

在这里插入图片描述
main函数和swap函数各自都有一个独立的变量空间,离开main去调用swap的时候,其实就是离开了main函数的变量空间
swap函数里的a和b,和main函数里的a和b没有任何关系,他们不在同一个变量空间

int main() {
	int a=5,b=6;
	if(a<b) {
		int i=10;
		// 定义在if语句块里的变量,生存期和作用域都是在这个块里,离开if语句,i这个变量就不存在了
		printf("%d",i);
	}
	i++;// 在这个括号的外面使用i ,就会报错undeclared
}

//	甚至可以随便拉一对大括号来定义变量
// 这样程序也是没有任何问题的
{int j;}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值