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个字节?