c++_字符串数组作为函数参数

字符串数组作为函数参数

注意: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 }
返回字符串的地址(指针)

执行结果为:

 

猜你喜欢

转载自www.cnblogs.com/YiYA-blog/p/10525031.html