级别:普及组
难度:4
一、字符串的表示形式
在 C++中,我们可以用两种方式访问字符串。
(1)用字符数组存放一个字符串,然后输出该字符串。
(2)用字符指针指向一个字符串。可以不定义字符数组,而定义一个字符指针。用字 符指针指向字符串中的字符。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <iostream> using namespace std; int main(){ char str[]="Hello, World!"; char *Pstr; Pstr=str; cout<<str<<endl; cout<<Pstr<<endl; cout<<Pstr[1]<<endl; cout<<Pstr+1<<endl; cout<<(void *)str<<endl; cout<<(void *)(Pstr+1); } |
在这里,我们没有定义字符数组,而是在程序中定义了一个字符指针变量 Pstr,并将str的地址赋值给Pstr。
二、字符串指针作函数参数
可以将字符串通过地址的方式从一个函数传递到另一个函数,即可以用数组名作来参数也可以用指向字符串的指针变量做参数,在被调用的函数中可以改变字符串内容,在主函数中可以得到改变的字符串。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <iostream> #include <cstring> using namespace std; int StringLength(char *a){ int len = 0; len=strlen(a); //strlen(str)这个函数返回的是str的长度,需要包含头文件<cstring>。 return len; } void changeString(char *a){ a[5]=','; } int main(){ char s[]="hello world"; char *p; p=s; cout<<StringLength(s)<<endl; cout<<StringLength(p)<<endl; changeString(p); cout<<p; return 0; } |
特别提示:
char* p = “abc”; 这样的语句在C++ 11中会报错,在C中可以。