// 15 char型字符串与函数 /* #include <iostream> using namespace std; //int get(const char*p); int get(const char p[]); int main() { //char型字符串也就是C风格的字会串,它由一个串字符组成,结尾为字符串结束标志'\0' //字符串名是第一个字符的地址,因此我们将字符串名作为参数传递到函数时,其实就是将地址传递到函数中去 //由于字符串的最后一个字符是'\0',因此我们不必传递字符长度,只要在函数中设置一个循环体,把结束字符作为循环结束的条件即可 char ch[15] = "hello word"; //字符串数组 char *p = "very well"; //指向下个末命名的字符串数组指针 "good idea"; //一个末使名的字符串数组 //char ch[15] 与char *p最大的区别在于ch中的字符值是可以修改的,而p的指向的字符值是不能修改的 ch[0] = 'H'; //*(p+0) = 'V'; 不能被修改的 //未命名字符串存放在文字常量区,它的值是不可改变的,而指向一串字符的指针p由于指向的就是未命名字符串,所以它指向的字符串也是不可更改的,只有第一种方式,也就是字符串数组,由于它是以数组形式存放字符串的,所以它的值是可以改变的 int chLength = get(ch); int pLength = get(p); cout<<"ch:"<<ch<<" 长度为:"<<chLength; cout<<"p:"<<p<<" 长度为:"<<pLength; return 0; } //int get(const char *p) int get(const char p[]) { int count = 0; //while(*p)中的*p代表p指针指向的字符,这样每次p++后,p指针就指向下一个字符 //*p也就成了下一个字符,而count++则表示字符又增加多一个,这样当p指针指向最后一个字符,也就是'\0'时,*p变成了数值为0的空字符,为0表示条件为假,while循环结束 while(*p) { count++; p++; } return count; } */