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

編譯器識別變數類型

發布時間: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本身是在棧中的。

閱讀全文

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

熱點內容
怎麼批量有順序的命名文件夾 瀏覽:209
杭州程序員健身 瀏覽:17
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151