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类型的指针是不是返回字符串第一个元素地址?
展开
 我来答
305508676
2010-11-05 · TA获得超过648个赞
知道小有建树答主
回答量:627
采纳率:50%
帮助的人:599万
展开全部
"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结束。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式