user-0 提问: 关于return的用法求教

回复:
user: user-1
content: #include <stdio.h> #include <string.h>  #define MAXWORLDLEN(len) if(len>20){return -1}   void ReverseStr(char* head, char* tail)   {       while(head < tail)       {           *head ^= *tail;           *tail ^= *head;           *head ^= *tail; 		head++; 		tail--;     }   }  void ReverseSentence(char *s)   {       // 这两个指针用来确定一个单词的首尾边界       char *p = s ;    // 指向单词的首字符       char *q = s ;    // 指向空格或者 '\0'          while(*q != '\0')       {   		bool bIsAlpha = (*q >= 'a' && *q <= 'z' || *q >= 'A' && *q <= 'Z'); 		bool bDouble = (*q == '-' && *(q+1) == '-' ); 		if( !bIsAlpha && *q != '-') 		{ 			ReverseStr(p, q - 1) ;   			*q = ' '; 			q++; 			p = q; 		} 		else if( !bIsAlpha && bDouble) 		{ 			ReverseStr(p, q - 1) ;   			*q++ = ' '; 			*q = ' '; 			q++; 		} 		else 			q++;       }          ReverseStr(p, q - 1) ; // 对最后一个单词逆序       ReverseStr(s, q - 1) ; // 对整个句子逆序(将整个句子看成一个单词)	 }   void main() { 	char src[] = "Test love-you";  	ReverseSentence(src); 	puts(src);  	getchar(); }[code=c][/code]

user: user-2
content: 引用 10 楼 ShaelLancelot 的回复: void fn() {   for(;;)   {     while(1)     {       if(1 == 1){return;}     }   }  }  当执行return时，就直接跳出当前执行的函数fn了。 如果是递归的话，只跳出当前执行的fn函数，父fn函数还会继续执行。+1

user: user-3
content: 我觉得用goto是恰到好处！

user: user-4
content: return 可以说是一种特殊的退出代码，指的是：“返回某个值” 使用方法是： return 常量、变量或表达式；   return可以嵌套在if和switch中使用： 例如： if(a > b) return a; else return b;  //这里的意思是，如果a比b大，那就返回a的值；否则（指的就是a小于或者等于b）返回b的值 //返回的值是返回给调用的变量或者函数，可以作为递归调用   注意的是：一个函数只能return一个值，就是说，不能多个返回多个调用！[b] [/b]

user: user-5
content: return的功能有两个：1.返回值; 2.返回控制。对于有返回值的函数，使用return，两个功能都用到了。而对于无返回值的函数，return也可以用，不过它只用来返回控制，当我们的代码运行到一个地方，我们确认后面的代码不需要再继续进行下去了，就可以使用return直接结束这个函数(被调用函数)，并返回控制权给调用函数。

user: user-6
content: 最好不要使用goto了，跳来跳去的，你写这样的代码，以后维护自己都摸不清程序的执行顺序，如果是别人来维护你会被骂死

user: user-7
content: 像一些多重循环中想要直接跳出执行一段代码，就用goto呀，而不会一层一层的break

user: user-8
content: 那些循环从上往下缕 遇到return就返回 相关函数就执行到那

user: user-1
content: goto和全局变量是衡量你c语言能力的重要标志之一~~~

user: user-9
content: void fn() {   for(;;)   {     while(1)     {       if(1 == 1){return;}     }   }  }  当执行return时，就直接跳出当前执行的函数fn了。 如果是递归的话，只跳出当前执行的fn函数，父fn函数还会继续执行。

user: user-10
content: 引用 7 楼 w82076322 的回复:[quote=引用 5 楼 missheaven2011 的回复:] [quote=引用 3 楼 w82076322 的回复:] [quote=引用 2 楼 a345485527 的回复:]  ？？  int foo() {         for(int i=0;i<10;i++) 		for(int j=0;j<10;j++) 			return -1;//函数在这里直接返回了  	return 0; } 请问在这里返回到哪里去了？为什么不使用goto语句呢？[/quote] 返回到调用该函数的地方去了，goto只能在函数内部调用[/quote]也就是说goto语句不能从一个子函数跳到另一个子函数或主函数？[/quote] 不能，有兴趣你可以测试一下，这样印象深刻点，函数间跳跃可以用setjump和longjump实现

user: user-0
content: 引用 5 楼 missheaven2011 的回复:[quote=引用 3 楼 w82076322 的回复:] [quote=引用 2 楼 a345485527 的回复:]  ？？  int foo() {         for(int i=0;i<10;i++) 		for(int j=0;j<10;j++) 			return -1;//函数在这里直接返回了  	return 0; } 请问在这里返回到哪里去了？为什么不使用goto语句呢？[/quote] 返回到调用该函数的地方去了，goto只能在函数内部调用[/quote]也就是说goto语句不能从一个子函数跳到另一个子函数或主函数？

user: user-0
content: 引用 4 楼 jerry_dqh 的回复:[quote=引用 3 楼 w82076322 的回复:] [quote=引用 2 楼 a345485527 的回复:]  ？？  int foo() {         for(int i=0;i<10;i++) 		for(int j=0;j<10;j++) 			return -1;//函数在这里直接返回了  	return 0; } 请问在这里返回到哪里去了？为什么不使用goto语句呢？[/quote]  return 直接函数返回了，goto你想怎么用呢，麻烦啊[/quote]那代码中return的-1给了谁呢？系统？ 我看《C语言入门经典》中讲的如果跳出多重循环可以直接使用goto语句跳到想到达的地方。

user: user-10
content: 引用 3 楼 w82076322 的回复:[quote=引用 2 楼 a345485527 的回复:]  ？？  int foo() {         for(int i=0;i<10;i++) 		for(int j=0;j<10;j++) 			return -1;//函数在这里直接返回了  	return 0; } 请问在这里返回到哪里去了？为什么不使用goto语句呢？[/quote] 返回到调用该函数的地方去了，goto只能在函数内部调用

user: user-11
content: 引用 3 楼 w82076322 的回复:[quote=引用 2 楼 a345485527 的回复:]  ？？  int foo() {         for(int i=0;i<10;i++) 		for(int j=0;j<10;j++) 			return -1;//函数在这里直接返回了  	return 0; } 请问在这里返回到哪里去了？为什么不使用goto语句呢？[/quote]  return 直接函数返回了，goto你想怎么用呢，麻烦啊

user: user-0
content: 引用 2 楼 a345485527 的回复:？？  int foo() {         for(int i=0;i<10;i++) 		for(int j=0;j<10;j++) 			return -1;//函数在这里直接返回了  	return 0; } 请问在这里返回到哪里去了？为什么不使用goto语句呢？

user: user-12
content: ？？  int foo() {         for(int i=0;i<10;i++) 		for(int j=0;j<10;j++) 			return -1;//函数在这里直接返回了  	return 0; }

user: user-13
content: return用于结束一个函数 需要返回值的，把返回值放在return语句中，不需要返回值的，直接return;即可