C语言关键字浅析-return

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Johan_Joe_King/article/details/84196378

### C语言关键字浅析系列 ###

### ISO/ANSI C 关键字 ###

return关键字是C程序中最常见的关键字之一

对于一个最简单的demo程序,或者说你最早接触的HELLO WORLD程序,里面至少有两个你最早见到的关键字

int和return(注意,include不是C语言的关键字

return的字面意思的“返回”,其常用在C语言的函数相互调用中

return的作用是:

表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值。

1、函数调用关系

C语言中一个很关键的语法结构就是函数,而函数可以相互调用,一个简单的函数调用过程大概是这样的:

函数常用于封装代码,就像个黑匣子,我们不需要知道里面的工作原理是怎样的,我们只知道,需要放什么东西进去,最后能得到什么

而最后能得到什么,这就需要函数中的return关键字了,通常它被视作函数返回主调函数的标志,意味着当前函数执行的结束

如果return用在循环或选择等嵌套结构中,则是比break更直接的退出方法:

/* 暴力跳出循环的例子 */
void fun(int a[])
{
	int i;
	for (i = 0;i < 10;i++)
	{
		if(a[i] < 0)
			return;   /* 判断到不合格条件,直接暴力返回,不执行后面的 */
		……
	}
	……
}

/* 常用的函数中检查不合格时的返回 */
/* 一个Windows窗体程序,获取两个文本框中的数字(0-9),然后在另一个标签上显示其和 */
void getResult()
{
	/* 获取文本框中的值 */
	char a = getNumber1Text();
	char b = getNumber2Text();

	/* 检查获取到的文本 */
	if (a == ' ' || b == ' ')
		return;  /* 无效字符,返回,无需再执行后面的部分 */

	/* 转换类型,计算,显示到标签 */
}

2、return后面带的值

作为函数返回主调函数的标志,有时候函数在return时会带上一个值,而这个值与函数的类型有关

(1)void类型:void表示空、无,void函数是很常用的一种函数,这样的函数不返回任何值,但这个函数本身可以当做一组动作来封装

比如数据库中常见的增删改操作,其通常并不需要特定的返回值,只是一组规定动作,但这样的组合在一起的规定动作很多:

/* 对数据库表添加一项,不需要特定的返回值 */
void insert(id)
{
	/*
		按照定义,void类型的函数应该返回一个void值,或者叫return void;
		但通常我们将其省略,所以常见的void函数最后没有return语句
		但void函数中可以用return;来返回主调函数
	*/
}

(2)常量、变量:如果需要函数返回一个结果,比如求和函数等计算类型函数,就需要根据函数的类型返回相应类型的值:

/* return常量,最常见的例子就是main函数 */
int main(void)
{
	return 0;   /* 0在系统中常表示函数正常执行完毕 */
}

/* return常量的另一个常见例子是返回bool类型值 */
bool bigger(int a, int b)
{
	if (a > b)
		return true;   /* true和false不是C语言的关键字,但是保留字,表示bool的对/错常量 */
	else
		return false;
}

/* return变量常用于返回一种处理结果,如计算类函数 */
float addFloat(float a, float b)
{
	float c;
	c = a + b;
	return c;    /* 返回的变量的类型必须与函数类型一致 */
}

/* 创建类函数中也常见return变量,如创建新的结构体变量 */
struct node{int age;char sex;};
node * createNewNode()
{
	node *p = new node;
	p->age = 22;
	p->sex = 'm';
	return p;   /* 指针类型也能作为返回值 */
}

(3)表达式:表达式也能被return,但按优先级会让表达式先计算,然后其实就是返回结果,有时return表达式会更简练:

/* bigger函数的优化 */
bool bigger(int a, int b)
{
	return (a > b) ? true : false;
}

/* addFloat函数的优化 */
float addFloat(float a, float b)
{
	return a + b;
}

/* 函数也是表达式 */
float addFloat(float a, float b)
{
	return addFloat(a + b, a - b);
}

——参考《C Primer Plus第五版》

猜你喜欢

转载自blog.csdn.net/Johan_Joe_King/article/details/84196378