热心网友
回答时间:2024-10-29 17:05
【为啥char * pszBuf[3] = {"123","456", "789"};的123, 456, 789保存在常量区,】
pszBuf[0] 、pszBuf[1]、 pszBuf[2] 、三个char* 类型指针变量 它们各自存放
字符串常理"123","456", "789"的首地址 这些字符串常量本身存放在 常理区
【但是char pszBuf[3][4] = {"123","456", "789"};的123, 456, 789保存在栈区,】
字符串“123” 的字符‘1’ 字符‘2’ 字符‘3’字符'\0'各自塞入
pszBuf[0][0]、 pszBuf[0][1]、 pszBuf[0][2]、 pszBuf[0][3]
字符串“456” 的字符‘4’ 字符‘5’ 字符‘6’字符'\0'各自塞入
pszBuf[1][0]、 pszBuf[1][1]、 pszBuf[1][2]、 pszBuf[1][3]
.............. 就这样 ,你不要把问题想复杂了
收起
热心网友
回答时间:2024-10-29 17:06
举个例子,你看一个简单的。
char *p = "1234"; 其中1234就是保存在常量区
char p[5] = "1234";这个是保存在栈区
你也可以简单的理解,char *p是一个指针,本身不能存放东西吧?只能是指向一块区域。
char p[5]是在栈上开辟了空间,用来存放东西。
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。
收起