什么是char*?

Aus*_*tin 4 c++ pointers

所以我一直在看大学关于C++的讲座,我学到了很多东西,但有一件事我还是听不懂:

为什么有时必须这样做?

char* test = "testing";
Run Code Online (Sandbox Code Playgroud)

从我读过/看过的内容来看,我只是不明白你为什么要这样做*.根据我的想法,我只*知道你有一个地址,但也许我只是错了.

Mat*_*haq 17

这是一个char:

char c = 't';
Run Code Online (Sandbox Code Playgroud)

它只能容纳一个charACTER在同一时间!:)


这是一个C字符串:

char sz[] = "test";
Run Code Online (Sandbox Code Playgroud)

它可以"保持"不仅仅是一个词 char.


A char*指向多个序列的内存位置char.

char sz[] = {'t', 'e', 's', 't', 0};

const char *psz = "test";
Run Code Online (Sandbox Code Playgroud)

注意:

*psz == 't';
*(psz + 1) == 'e';
*(psz + 2) == 's';
*(psz + 3) == 't';
*(psz + 4) == 0; // NUL
Run Code Online (Sandbox Code Playgroud)

和:

sz[0] == 't';
sz[1] == 'e';
sz[2] == 's';
sz[3] == 't';
sz[4] == 0; // NUL
Run Code Online (Sandbox Code Playgroud)

  • 也许使用“\0”或“0”来终止字符串。`NULL` 是空指针常量,而不是字符串终止符。 (2认同)

Mar*_*k H 5

字符类型只能代表一个字符。当您有一个字符序列时,它们会在内存中紧挨着堆放,然后返回该序列中第一个字符的位置(分配给测试)。测试不过是指向“测试”中第一个字符的存储位置的指针,它表示它所指向的类型是一个字符。