仅用于记录学习理解
选择题答案及解析
globalVar
:C(数据段 (静态区))- 解析:全局变量存放在数据段(静态区),生命周期从程序开始到结束,程序运行期间一直存在。
staticGlobalVar
:C(数据段 (静态区))- 解析:静态全局变量同样存放在数据段(静态区),它的作用域仅限于本文件,和全局变量一样在程序运行期间存在。
staticVar
:C(数据段 (静态区))- 解析:函数内的静态局部变量存储在数据段(静态区),它在函数第一次调用时初始化,之后调用保持上次的值,直到程序结束。
localVar
:A(栈)- 解析:局部变量存放在栈中,函数调用时为其分配空间,函数结束时空间被释放 。
num1
:A(栈)- 解析:局部数组也是在栈上分配空间,其生命周期和局部变量类似,函数结束空间释放。
char2
:A(栈)- 解析:局部字符数组在栈上分配空间,存储字符数组内容。
*char2
:C(数据段 (静态区))- 解析:
char2
数组中的字符内容存放在静态存储区(常量区性质),因为字符串常量存储在静态存储区,这里是数组形式存储字符串。
- 解析:
pChar3
:A(栈)- 解析:指针变量
pChar3
本身是局部变量,存放在栈中,存放的是字符串常量的地址。
- 解析:指针变量
*pChar3
:D(代码段 (常量区))- 解析:
pChar3
指向的字符串常量"abcd"
存放在代码段(常量区) ,常量区存放程序中不会改变的常量。
- 解析:
ptr1
:A(栈)- 解析:指针变量
ptr1
是局部变量,存放在栈中,它存放通过malloc
分配的堆内存地址。
- 解析:指针变量
*ptr1
:B(堆)- 解析:
ptr1
指向的是通过malloc
在堆上分配的内存空间,所以*ptr1
所在空间是堆。
- 解析:
填空题答案及解析
sizeof(num1)
:40
- 解析:
num1
是包含 10 个int
类型元素的数组,int
类型在常见系统下一般占 4 字节,所以sizeof(num1)
为10 * 4 = 40
字节。
- 解析:
sizeof(char2)
:5
- 解析:
char2
是字符数组,存储字符串"abcd"
,字符串末尾会自动添加一个'\0'
作为结束符,所以一共占 5 个字节。
- 解析:
strlen(char2)
:4
- 解析:
strlen
函数计算字符串长度,不包含字符串结束符'\0'
,所以"abcd"
长度为 4。
- 解析:
sizeof(pChar3)
:4
(或 8,取决于系统指针大小)- 解析:
pChar3
是指针变量,在 32 位系统下指针一般占 4 字节,64 位系统下指针一般占 8 字节。
- 解析:
strlen(pChar3)
:4
- 解析:
pChar3
指向字符串"abcd"
,strlen
计算其长度(不包含结束符)为 4。
- 解析:
sizeof(ptr1)
:4
(或 8,取决于系统指针大小)- 解析:
ptr1
是指针变量,和pChar3
类似,在 32 位系统下占 4 字节,64 位系统下占 8 字节。
- 解析: