3 回答
TA貢獻1842條經驗 獲得超22個贊
你有其中一些是正確的,但是寫這些問題的人至少會欺騙你一個問題:
全局變量------->數據(正確)
靜態變量------->數據(正確)
常量數據類型----->代碼和/或數據。當一個常量本身存儲在數據段中時,考慮字符串文字,并且對它的引用將嵌入到代碼中
局部變量(在函數中聲明和定義)--------> stack(正確)
main函數中聲明和定義的變量-----> 堆也堆棧(老師試圖欺騙你)指針(例如:
char *arr,int *arr)-------> 堆數據或堆棧,具體取決于上下文。C允許您聲明全局或static指針,在這種情況下,指針本身將在數據段中結束。動態分配的空間(使用
malloc,calloc,realloc)--------> 堆的堆
值得一提的是,“堆?!北徽椒Q為“自動存儲類”。
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),然后使指針變量指向它?,F在,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 關注
- 494 瀏覽
添加回答
舉報
