3 回答
TA贡献1842条经验 获得超21个赞
你有其中一些是正确的,但是写这些问题的人至少会欺骗你一个问题:
全局变量------->数据(正确)
静态变量------->数据(正确)
常量数据类型----->代码和/或数据。当一个常量本身存储在数据段中时,考虑字符串文字,并且对它的引用将嵌入到代码中
局部变量(在函数中声明和定义)--------> stack(正确)
main
函数中声明和定义的变量-----> 堆也堆栈(老师试图欺骗你)指针(例如:
char *arr
,int *arr
)-------> 堆数据或堆栈,具体取决于上下文。C允许您声明全局或static
指针,在这种情况下,指针本身将在数据段中结束。动态分配的空间(使用
malloc
,calloc
,realloc
)--------> 堆的堆
值得一提的是,“堆栈”被正式称为“自动存储类”。
TA贡献1801条经验 获得超16个赞
纠正了错误的句子
constant data types -----> code //wrong
局部常量变量----->栈
初始化全局常量变量----->数据段
未初始化的全局常量变量-----> bss
variables declared and defined in main function -----> heap //wrong
在main函数-----> stack中声明和定义的变量
pointers(ex:char *arr,int *arr) -------> heap //wrong
dynamically allocated space(using malloc,calloc) --------> stack //wrong
指针(例如:char * arr,int * arr)------->指针变量的大小将在堆栈中。
考虑你动态分配n个字节的内存(使用malloc或calloc),然后使指针变量指向它。现在,n内存的字节数在堆中,指针变量需要4个字节(如果是64位机器8个字节),它将在堆栈中存储n内存块字节的起始指针。
注意:指针变量可以指向任何段的内存。
int x = 10;
void func()
{
int a = 0;
int *p = &a: //Now its pointing the memory of stack
int *p2 = &x; //Now its pointing the memory of data segment
chat *name = "ashok" //Now its pointing the constant string literal
//which is actually present in text segment.
char *name2 = malloc(10); //Now its pointing memory in heap
...
}
动态分配空间(使用malloc,calloc)-------->堆
- 3 回答
- 0 关注
- 456 浏览
添加回答
举报