字符串数组作为函数参数
注意:01)用while循环字符串数组时,结束的条件,在子函数中
02)指针字符串作为函数参数时,声明时注意要加const
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 { //字符串数组以空字符'\0'结束,如果到了最后,则推出while循环 25 if (*str == ch) //如果查找到对应的字符,则进入if语句 26 count++; 27 str++; //str指向下一个字符 28 } 29 return count; 30 }
执行结果为:
子函数返回字符串的方法:返回该字符串的地址
注意:01)声明一个用来盛放字符串地址的指针的时候,要用new来为其分配内存空间
02)注意字符串最后一个元素是空字符'\0',所以这里是要单独加紧字符串中去的
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] = '\0'; //因为字符串的序号是从0开始排序的,所以最后一个位置的序号是n 30 for (n = n - 1; n >= 0; n--) //书上用的是 while(n-- >0) 31 { 32 str[n] = ch; //重复的将ch赋值给指针数组 33 } 34 return str; 35 }
执行结果为: