我是靠谱客的博主 感动航空,最近开发中收集的这篇文章主要介绍C语言学习 函数的定义和调用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

# <1> 一般函数的声明

下面是一个 求两个整型变量之和的函数

函数运算完是返回一个整型值 所以函数的类型为 int

使用函数时要先声明

 

 

#include <stdio.h>
/*
函数怎么写?

返回值类型 函数名 (参数) 

	返回值类型一定要写 不确定或者没有返回值可以写 void
		例如 void add(int a,int b)
	参数列表可要可不要 也可以写不同变量 可以写void 也可以不写
{
	函数内容;
}

*/

int add();                 //声明函数 方法一
//int add(int,int);       声明函数 方法二
//int add(int a,int b);   声明函数 方法三


int main(void)
{
	int x = 25,y = 15;
        int num = 0;
        num = add(x,y);
	printf("x + y = %dn",num);


	return 0;

}


int add(int a,int b)    //   函数头    声明函数时可以直接复制 这段 加个分号;
{

	a = a + b ;       
	return (a);     //返回值  也可以去掉括号 return a; 
} 

 

 # <2>  函数与数组调用

这里有实参与形参的概念

实参就是实际的参数

形参就是形式上的参数

一般来说 像上一篇代码  main函数为主函数 而 add()为子函数  主函数的是实参 子函数的是形参

形参只是实参的一个副本 无论形参怎么变 不会影响实参的数值。

 

但是如果为指针类型的函数呢?

实参将一个存放着数据的地址传给形参

而在子函数中如果改变了形参的地址上的变量 就会等同于影响了实参的地址上的变量

因为地址是一样的

 

 

 

 

 

 

#include <stdio.h>

//声明函数	
char cha(char *);
char cha1(char *);

int main(void)
{

		
	
	char ch[5] = {'a','b','c','d','e'}; //定义一个含有五个元素的一维数组
	char *ch_p = NULL;  				//指针指向空地址 以防野指针出现
	ch_p = ch;							//将指针指向ch字符数组的首元素地址
	char ch_1,ch_2;                     //定义两个char变量 接受函数的char返回值
	ch_1 = cha(ch);
	ch_2 = cha1(ch);

	printf("cha = %c n",ch_1);
	printf("cha1 = %c n",ch_2);
    printf("n");
	return 0;

}
  //因为main函数的实参传的是地址,所以形参接受的地址上保存着同一个数据 。
char cha(char *ch)
{

	return ch[3]; //  输出第四个字符
}

char cha1(char ch[5])
{
	//不建议弄这个定义 因为从内存的角度设置的变量越少越好
	/*
	char c = 0;
	c = ch[3];
	*/
	
	return *(ch + 2);  //  输出第三个字符
}

 

 

#<3> 如何让函数返回多个相同类型的值

 函数只能返回一个值

如果想经过函数从而得到多个值

有两个方法

一个是将变量设置为全局变量 ,但是由于全局变量可以在所有函数中都可以使用,从而其值的变化不确定,所以要慎用。

一个是设置一个数组进行储存 返回值设为一个数组 

 

题目为输入一个字符串 ,通过实参传入子函数 统计出字符串的字母 数字 空格 其他字符的个数 并在主函数打印出来

#include <stdio.h>

int *look_up (char *,int,int *); //声明函数 

int main(void)
{
	unsigned int len;
	char ch[200] = {0};    //定义一个一维字符数组,数组内包含着200个字符元素 
	int num_sz[4] = {0};   //定义一个一维整型数组,数组内包含4个整型元素
	int num_ch,num_in,num_kong,num_other;//定义 字符个数 数字个数 空格个数 其他字符个数
	printf("请输入一串字符:n");
	fgets(ch,200,stdin);               
	len = strlen(ch);

	printf("你输入的字符串为 : n%sn",ch);
	look_up(ch,len,num_sz);
	
	printf(" 字母一共有 = %dn 数字一共有 = %dn 空格一共有 = %dn 其他字符一共有 = %dn ",num_sz[0],num_sz[1],num_sz[2],num_sz[3]);
	
	return 0;
}

int *look_up(char *ch,int len,int *num_sz)    
{
	int num_ch = 0,num_in = 0,num_kong = 0,num_other = -1;
 //其他字符 -1 的原因是要把回车给去掉
	int i = 0;
	for(i = 0 ; i<len ; i++)
	{
		
		if( ('a' <= ch[i] && ch[i] <= 'z' )|| ('A' <= ch[i] && ch[i] <= 'Z' ))
                //判断字符是否为字母字符 
        
		{
			num_ch++;
		}
		
		else if('0' <= ch[i] && ch[i] <= '9' )
		{
			num_in++;
		}
		
		else if(ch[i] == ' ' )
		{
			num_kong++;
		}
		
		else 
		{
			num_other++;
		}
	}
//将各个字符的数值 赋给整型数组
	num_sz[0] = num_ch;
	num_sz[1] = num_in;
	num_sz[2] = num_kong;
	num_sz[3] = num_other;
	
	
	return num_sz;  //返回整型数组的地址
}

 

最后

以上就是感动航空为你收集整理的C语言学习 函数的定义和调用的全部内容,希望文章能够帮你解决C语言学习 函数的定义和调用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部