将C风格字符串作为参数的函数
要将C风格字符串作为函数的参数,表示方法有如下几种:
- char数组
- 用引号括起来的字符串常量
- char指针
将字符串作为参数来传递,实际传递的是字符串第一个字符的地址。因此形参可声明为 char* 。
#include <iostream>
using namespace std;
/**
* 计算字符串中s有多少个c字符
*/
int c_in_str(const char *s, char c) {
int num = 0;
while (*s) {
if (*s == c) {
num++;
}
s++;
}
return num;
}
int main() {
char *s = "test_c_style_str";
char c = 's';
int num = c_in_str(s, c);
cout << "num = " << num << endl;
return 0;
}
返回C风格字符串的函数
函数无法返回一个字符串,但是可以返回字符串的地址.
#include <iostream>
using namespace std;
/**
* 组装一个字符串
*/
char * buildStr(char ch, int number) {
//要创建包含number个字符的字符串,需要能够存储number+1个字符的空间,以便能够存储空值字符。
char *str = new char[number + 1];
str[number] = '\0';
// for (int var = 0; var < number; var++) {
// str[var] = ch;
// }
while (number-- > 0) {
str[number] = ch;
}
return str;
}
int main() {
char *s = buildStr('V', 10);
cout << " s = " << s << endl;
//让函数返回一个指向new分配的内存的指针的缺点是必须要记得使用delete.在C++类中可以通过构造函数和析构函数处理这些细节.
delete[] s;
return 0;
}