C++ 指向字符指针的内存分配
例如c++primerplus中文第5版144面的例子:constintCities=5;constchar*cities[Cities]={"1","2","3","4...
例如c++primer plus中文第5版144面的例子:
const int Cities=5;
const char *cities[Cities]=
{
"1",
"2",
"3",
"4",
"5",
};
如果不是用指针的话就得初始化大小.而为每个字符元素分配25个字符的空间大小.
const char cities[25][Cities]=
{
"1",
"2",
"3",
"4",
"5",
};
如果用string初始化的话会自动分配数组的大小,这个我知道.
const string cities[Cities]=
{
"1",
"2",
"3",
"4",
"5",
};
问题来了,我想知道的是怎么给字符指针数组分配的内存呢,以便存储这些字符?
希望能说得简单易懂点,新手学起来慢...
char类型的指针是不是返回字符串第一个元素地址? 展开
const int Cities=5;
const char *cities[Cities]=
{
"1",
"2",
"3",
"4",
"5",
};
如果不是用指针的话就得初始化大小.而为每个字符元素分配25个字符的空间大小.
const char cities[25][Cities]=
{
"1",
"2",
"3",
"4",
"5",
};
如果用string初始化的话会自动分配数组的大小,这个我知道.
const string cities[Cities]=
{
"1",
"2",
"3",
"4",
"5",
};
问题来了,我想知道的是怎么给字符指针数组分配的内存呢,以便存储这些字符?
希望能说得简单易懂点,新手学起来慢...
char类型的指针是不是返回字符串第一个元素地址? 展开
1个回答
展开全部
"1",
"2",
"3",
"4",
"5",
是常量系统自动分配到了常量区,
const char *cities[Cities] 是将 这些常量在常量区的地址给了cities;
const char cities[25][Cities]是将这些常量拷贝一个备份并在栈上重新申请内存,所以需要指定内存空间的大小。
const string cities[Cities]的道理和const char cities[25][Cities]相同 只是string 自动分配内存大小而已
char类型的指针是不是返回字符串第一个元素地址?
是的 char* 指向的字符串是从以该地址开始一直到\0结束。
"2",
"3",
"4",
"5",
是常量系统自动分配到了常量区,
const char *cities[Cities] 是将 这些常量在常量区的地址给了cities;
const char cities[25][Cities]是将这些常量拷贝一个备份并在栈上重新申请内存,所以需要指定内存空间的大小。
const string cities[Cities]的道理和const char cities[25][Cities]相同 只是string 自动分配内存大小而已
char类型的指针是不是返回字符串第一个元素地址?
是的 char* 指向的字符串是从以该地址开始一直到\0结束。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询