C语言 内存四区问题

发布网友 发布时间:2024-10-24 14:58

我来回答

3个回答

热心网友 时间:2024-10-29 17:03

char * pszBuf因为初始化中的值是字面常量,而指针没有申请地址,是指向常量的地址
char pszBuf[3][4]是数组,数组是有内存单元的,所以在栈去

热心网友 时间:2024-10-29 17:03

【为啥char * pszBuf[3] = {"123","456", "7"};的123, 456, 7保存在常量区,】
pszBuf[0] 、pszBuf[1]、 pszBuf[2] 、三个char* 类型指针变量 它们各自存放
字符串常理"123","456", "7"的首地址 这些字符串常量本身存放在 常理区

【但是char pszBuf[3][4] = {"123","456", "7"};的123, 456, 7保存在栈区,】
字符串“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:04

举个例子,你看一个简单的。
char *p = "1234"; 其中1234就是保存在常量区
char p[5] = "1234";这个是保存在栈区
你也可以简单的理解,char *p是一个指针,本身不能存放东西吧?只能是指向一块区域。
char p[5]是在栈上开辟了空间,用来存放东西。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com