//指针数组 char* p1[]={"123","456","789"}; //二维数组

//指针数组char*p1[]={"123","456","789"};//二维数组charp2[3][4]={"123","456","789"};二维数组放在栈区我知... //指针数组
char* p1[]={"123","456","789"};
//二维数组
char p2[3][4]={"123","456","789"};
二维数组放在栈区我知道,为什么指针数那些数字要放在常量区?那些数字放在栈区然后指针再指向它们不行吗?
展开
 我来答
传薪网络
2016-02-04 · TA获得超过1355个赞
知道小有建树答主
回答量:635
采纳率:92%
帮助的人:242万
展开全部
  所有代码指定的量,都是存放在常量区,这是编译器决定的
  代码在初始化的时候,会将这些常量加载到栈区
  这是因为栈是变化的,和运行环境相关的东西,编译器无法预言和确定
  唯有在函数初始化的时候从常量区加载,并初始化,才是可行的策略
  所以所有的指定量都是存放在常量区,因为只有这些是可控制和可预期的。也正是因为如此,常量的总和大小不能超过64k(65536字节),否则编译器会出现错误!因此无法定义一个非常大的常量数组,否则会导致常量区溢出,进而导致编译器失败
追问
那为什么二维数组就放在了栈区?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式