发布网友 发布时间:2024-10-24 14:58
共3个回答
热心网友 时间:2024-10-29 17:05
char * pszBuf因为初始化中的值是字面常量,而指针没有申请地址,是指向常量的地址
char pszBuf[3][4]是数组,数组是有内存单元的,所以在栈去
热心网友 时间:2024-10-29 17:05
【为啥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:06
举个例子,你看一个简单的。
char *p = "1234"; 其中1234就是保存在常量区
char p[5] = "1234";这个是保存在栈区
你也可以简单的理解,char *p是一个指针,本身不能存放东西吧?只能是指向一块区域。
char p[5]是在栈上开辟了空间,用来存放东西。