導航:首頁 > 源碼編譯 > 編譯器識別變數類型

編譯器識別變數類型

發布時間:2023-06-10 01:30:00

⑴ 在java中,怎樣判斷一個變數是什麼類型的

哥們。。

一般沒有在程序里才去判斷這個《是什麼類型的》。。。 而且這樣沒有意義。

因為類型太多了。 一般都是判斷《不是什麼類型》 就會用你說的instanceof做一個if判斷。

若想知道一個出現的對象是什麼類型。 要是你想用程序識別的話 你就需要用到映射了。

這個一兩句說不清。 若是你本人讀代碼想知道什麼類型。 那就按CTRL+ 滑鼠點擊該對象。。

額 LZ若真想在程序里判斷。 只好去看看映射的東西了

⑵ c/c++ 編譯器如何區分char[] 與 char*

1、本身 char [] 和char * 就是不同的符號 編譯器自然能識別 。
2、你說的是符號表吧。 符號表主要是給鏈接器用的。
3、關鍵你要理解C/C++程序的存儲分布。
一個由c/C++編譯的程序佔用的內存分為以下幾個部分
1、棧區(stack)—由編譯器自動分配釋放,存放函數的參數值,局部變數的值等。其操作方式類似於

數據結構中的棧。
2、堆區(heap)—一般由程序員分配釋放,若程序員不釋放,程序結束時可能由OS回收。注意它與數據

結構中的堆是兩回事,分配方式倒是類似於鏈表,呵呵。
3、全局區(靜態區)(static)—全局變數和靜態變數的存儲是放在一塊的,初始化的全局變數和靜態

變數在一塊區域,未初始化的全局變數和未初始化的靜態變數在相鄰的另一塊區域。程序結束後由系統

釋放。
4、文字常量區—常量字元串就是放在這里的。程序結束後由系統釋放。
5、程序代碼區
這是一個前輩寫的,非常詳細
//main.cpp
int a=0; //全局初始化區
char *p1; //全局未初始化區
main()
{
int b;棧
char s[]="abc"; //棧
char *p2; //棧
char *p3="123456"; //123456\0在常量區,p3在棧上。
static int c=0; //全局(靜態)初始化區
p1 = (char*)malloc(10);
p2 = (char*)malloc(20); //分配得來得10和20位元組的區域就在堆區。
strcpy(p1,"123456"); //123456\0放在常量區,編譯器可能會將它與p3所向"123456"優化成一個地方。
}

stack:
由系統自動分配。例如,聲明在函數中一個局部變數int b;系統自動在棧中為b開辟空間
heap:
需要程序員自己申請,並指明大小,在c中malloc函數
如p1=(char*)malloc(10);
在C++中用new運算符
如p2=(char*)malloc(10);
但是注意p1、p2本身是在棧中的。

閱讀全文

與編譯器識別變數類型相關的資料

熱點內容
事業單位壓縮軟體 瀏覽:136
阿狸雲伺服器關了怎麼開啟 瀏覽:332
舉國旗的電影:榮耀、團結與愛國的動人故事 瀏覽:239
排序演算法應注意 瀏覽:357
定位應用文件夾位置 瀏覽:909
為什麼安卓手機用久了還會卡 瀏覽:945
什麼正規的app查徵信 瀏覽:651
顧客為什麼第一時間能想到美團app 瀏覽:933
linux重新啟動命令 瀏覽:395
ios短視頻編譯 瀏覽:908
app文件怎麼改成cci文件 瀏覽:719
伺服器如何做虛擬路由 瀏覽:670
拋光圓圈演算法 瀏覽:327
pdf母乳喂養 瀏覽:178
32位javajre 瀏覽:231
qq加密如何用指紋 瀏覽:74
vscode配置c語言編譯環境教程 瀏覽:95
什麼是離線編程 瀏覽:557
郵箱要填pop伺服器地址 瀏覽:346
如何給文件夾許可權代碼 瀏覽:381