C++ 如何打印指针字符数组

C++ 如何打印指针字符数组,c++,visual-studio-2013,C++,Visual Studio 2013,这是我的节目: #include <iostream> using namespace std; int main() { char str[6][80] = { "Robert Redford", "Hopalong Cassidy", "Lassie", "Slim Pickens", "Boris Karloff", "Oliver Hardy" }; const char*

这是我的节目:

#include <iostream>

using namespace std;

int main()
{
    char str[6][80] = { "Robert Redford",
        "Hopalong Cassidy",
        "Lassie",
        "Slim Pickens",
        "Boris Karloff",
        "Oliver Hardy" };

    const char* pstr[] = { "Robert Redford",
        "Hopalong Cassidy",
        "Lassie",
        "Slim Pickens",
        "Boris Karloff",
        "Oliver Hardy" };

    cout << "str:\n";
    for (int i = 0; i < 6; i++)
    {
        for (int j = 0; j < 80; j++)
        {
            cout << str[i][j];
        }
    }

    cout << endl;

    cout << "pstr:\n";
    for (int i = 0; i < strlen(*pstr) ; ++i)
    {
        cout << pstr[i] << endl;
    }

    cout << "Size of str:" << sizeof str << endl;
    cout << "Size of pstr:" << sizeof pstr << endl;

    return 0;
}
#包括
使用名称空间std;
int main()
{
char str[6][80]={“Robert Redford”,
“霍普朗·卡西迪”,
“小姐”,
“苗条的皮肯斯”,
“鲍里斯·卡洛夫”,
“奥利弗·哈代”};
const char*pstr[]={“Robert Redford”,
“霍普朗·卡西迪”,
“小姐”,
“苗条的皮肯斯”,
“鲍里斯·卡洛夫”,
“奥利弗·哈代”};

cout表达式
strlen(*pstr)
给出的是
pstr
数组中第一个字符串的长度,而不是数组的大小

为此,您可以使用
sizeof(pstr)/sizeof(*pstr)
。请注意,此技巧仅适用于正确的数组,而不适用于指针。因此,如果您将数组传递给函数,从而使数组衰减为指针,则无法使用此技巧



发生的情况是,您超出了
pstr
数组的界限,这会导致程序崩溃。

使用
std::string
std::vector
并远离这种指针疯狂。我知道这些。:D我这样做是为了上大学。我在指针方面很弱。谢谢你,伙计!但我有一个另一个问题-str的大小是480,我知道为什么是这样。但是pstr 24的大小如何?有些事情告诉我,使用指针比使用普通数组更有利。@parthibbis如果
pstr
数组是24字节,它告诉我你在32位系统上,指针是32位(四个字节)。因为有六个指针,所以数组中有6*4个字节。实际上,我为32位系统编译了这个。在编译了64位之后,指针似乎有8个字节。所以指针的优点是占用的空间更少。我的意思是480字节和24字节之间有巨大的差异。@parthibbis是为
pstr
数组编写的,你可以还必须记住计算字符串的长度(包括它们的终止符)。它仍然不会是480字节,但会比“just”多得多24个字节。罗伯特·雷德福德=15个字节,霍普朗·卡西迪=17个字节,拉西=7个字节,斯利姆·皮肯斯=13个字节,鲍里斯·卡洛夫=14个字节,奥利弗·哈迪=13个字节。那么,pstr的总字节数=79个字节?