C++ 初学者指南 第五篇(9)
2010-05-31 11:41
246 查看
必备技能5.9:返回指针
函数还可以返回指针。函数返回指针和函数返回其它类型的数据是一样的,没有什么特殊的地方。但是由于指针是C++中最容易让人迷惑的地方之一,所以在这里,我们有必要对函数返回指针进行讨论。
返回指针的时候,函数的返回类型也必须声明为指针。例如,下面的语句就声明了函数f()返回整型数指针:
int *f();
如果一个函数的返回值是指针类型,那么在函数中也必须返回一个指针。(正如其它返回值类型的函数一样,返回值必须和返回类型是兼容的。)
下面的程序演示了函数返回指针。函数get_subStr()在一个字符串中查找子串,并返一个指向第一个匹配字串的指针。如果没有匹配的字串,则返回空指针。例如,如果字符串为“I like C++”,而查找的字串是”like”,那么函数返回的就是指向”like”的指针。
上面程序的输出如下:
substring found: three four
main()函数
我们都知道main()函数是一个非常特殊的函数,因为它是我们程序执行时第一个被调用的函数。它标记着我们程序的开始。不像那些程序总是从代码的最顶部开始执行的编程语言那样,C++程序的开始都是从调用main()函数开始,而不管main()函数是在代码的什么位置。(然而把main()函数最为程序中的第一个函数是很常见的,这样可以方便地找到程序的入口。)
一个程序中只能有一个main()函数。如果一个程序中还有多个main()函数,则程序将无法知道应该应该从哪个main()函数开始执行。实际上,大部分的编译器都是能检查并报告这种错误的。正如前面所提到的那样,由于main()函数是C++中预先定义好的,所以我们不必声明其原型。
函数还可以返回指针。函数返回指针和函数返回其它类型的数据是一样的,没有什么特殊的地方。但是由于指针是C++中最容易让人迷惑的地方之一,所以在这里,我们有必要对函数返回指针进行讨论。
返回指针的时候,函数的返回类型也必须声明为指针。例如,下面的语句就声明了函数f()返回整型数指针:
int *f();
如果一个函数的返回值是指针类型,那么在函数中也必须返回一个指针。(正如其它返回值类型的函数一样,返回值必须和返回类型是兼容的。)
下面的程序演示了函数返回指针。函数get_subStr()在一个字符串中查找子串,并返一个指向第一个匹配字串的指针。如果没有匹配的字串,则返回空指针。例如,如果字符串为“I like C++”,而查找的字串是”like”,那么函数返回的就是指向”like”的指针。
//函数返回指针 #include <iostream> using namespace std; char *get_subStr(char *sub, char *str); int main() { char *subStr; subStr = get_subStr("three","one tow three four"); cout << "substring found: " << subStr; return 0; } //返回指向字串的指针或者空指针 char *get_subStr( char *sub, char *str) { int t; char *p, *p2,*start; for ( t = 0; str[t]; t++) { p = &str[t]; start = p; p2 = sub; while(*p2 && *p2==*p) { p++; p2++; } //如果找到了匹配的字串 if ( !*p2) { return start; } } return 0;//没有找到字串 }
上面程序的输出如下:
substring found: three four
main()函数
我们都知道main()函数是一个非常特殊的函数,因为它是我们程序执行时第一个被调用的函数。它标记着我们程序的开始。不像那些程序总是从代码的最顶部开始执行的编程语言那样,C++程序的开始都是从调用main()函数开始,而不管main()函数是在代码的什么位置。(然而把main()函数最为程序中的第一个函数是很常见的,这样可以方便地找到程序的入口。)
一个程序中只能有一个main()函数。如果一个程序中还有多个main()函数,则程序将无法知道应该应该从哪个main()函数开始执行。实际上,大部分的编译器都是能检查并报告这种错误的。正如前面所提到的那样,由于main()函数是C++中预先定义好的,所以我们不必声明其原型。
相关文章推荐
- C++ 初学者指南 第五篇(7)
- C++ 初学者指南 第五篇(14)
- C++ 初学者指南 第五篇(10)
- C++ 初学者指南 第五篇(1)
- C++ 初学者指南 第五篇(11)
- C++ 初学者指南 第五篇(2)
- C++ 初学者指南 第五篇(5)
- C++ 初学者指南 第五篇(4)使用return语句
- C++ 初学者指南 第五篇(3)
- C++ 初学者指南 第五篇(4)
- C++ 初学者指南 第五篇(8)
- C++ 初学者指南 第五篇(12)
- C++ 初学者指南 第五篇(13)
- C++ 初学者指南 第五篇(13)快速排序
- C++ 初学者指南 第七篇(7)
- 【原创】 C++ 学习指南一 (草稿) --送给各位C++初学者的新年礼物
- C++ 初学者指南 第六篇(10)
- C++ 初学者指南 第二篇(3)实字(即常量)
- C++ 初学者指南 第三篇(8)嵌套的循环
- C++ 初学者指南 第四篇(4)对数组进行排序