指针与字符串

级别:普及组
难度: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);

}

edit & run

在这里,我们没有定义字符数组,而是在程序中定义了一个字符指针变量 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;
}

edit & run

特别提示:
char* p = “abc”; 这样的语句在C++ 11中会报错,在C中可以。

Scroll to Top