目录:
- 传递字符串
- 返回字符串
- 传递结构
- 传递结构的地址和返回结构地址
- 函数和string对象
- 函数与array对象
- 递归函数(简单应用)
- 递归调用(复杂)
- 函数指针
- 子函数中调用子函数
- 创建指向函数的指针
- 函数指针数组之*pd[3]
字符串数组作为函数参数(传递字符串)
注意:01)用while循环字符串数组时,结束的条件,在子函数中
02)指针字符串作为函数参数时,声明时注意要加const
03)字符串数组作为函数参数时,直接将字符串数组的名字写入子函数的括号内作为子函数的实参即可 如:recurs(str,20);//其中str是一个字符串数组
04)用字符串数组作为形参的子函数声明的时候,就必须写全了 如:void subdivide(char ar[], int low, int high, int level); //声明一个递归函数
1 #include <iostream> 2 3 unsigned int c_in_str(const char* str, char ch); //不能修改str指针的值 4 5 int main() 6 { 7 using namespace std; 8 char mmm[15] = "minimum"; //声明一个字符串数组 9 const char* wail = "ululate"; //声明一个指针数组 10 11 unsigned int ms = c_in_str(mmm, 'm'); //函数调用 12 unsigned int us = c_in_str(wail, 'u'); 13 14 cout << ms << " m characters in" << mmm << endl; 15 cout << us << " u characters in" << wail << endl; 16 17 system("pause"); 18 return 0; 19 } 20 unsigned int c_in_str(const char* str, char ch) 21 { 22 unsigned int count = 0; 23 while (*str) //str传入的是一个字符串数组,只要不是空字符,*str就是非零值 24 { //字符串数组以空字符' '结束,如果到了最后,则推出while循环 25 if (*str == ch) //如果查找到对应的字符,则进入if语句 26 count++; 27 str++; //str指向下一个字符 28 } 29 return count; 30 }
执行结果为:
子函数返回字符串的方法:返回该字符串的地址(返回字符串)
注意:01)声明一个用来盛放字符串地址的指针的时候,要用new来为其分配内存空间
02)注意字符串最后一个元素是空字符' ',所以这里是要单独加紧字符串中去的
03)既然子函数返回的是一个字符串指针,那么在主函数中也是要定义一个字符串指针来接收此字符串指针的
1 #include <iostream> 2 3 char* buildstr(char ch, int n); //声明一个返回字符串地址的函数 4 5 int main() 6 { 7 using namespace std; 8 char ch; 9 int times; 10 char* str; 11 12 cout << "请输入一个字符:"; 13 cin >> ch; 14 cout << "请输入一个数字:"; 15 cin >> times; 16 17 str = buildstr(ch, times); 18 cout << "函数调用之后的指针数组为:" << str << endl; 19 delete[] str; //释放new创建的内存 20 21 system("pause"); 22 return 0; 23 24 } 25 26 char* buildstr(char ch, int n) 27 { 28 char* str = new char[n + 1]; //为空字符占一个位置 29 str[n] = '