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

編譯器識別變數類型

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

閱讀全文

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

熱點內容
米哈游聖遺物掉落演算法 瀏覽:198
伺服器禁止mac地址訪問 瀏覽:980
南昌社保app如何下載 瀏覽:195
如何編譯輸出分數 瀏覽:797
雷電模擬器無法連接伺服器怎麼辦 瀏覽:743
學習唱歌應該用什麼app 瀏覽:591
封面選擇演算法 瀏覽:626
合並pdf文件mac 瀏覽:266
快點app在哪裡放歌 瀏覽:832
tftp上傳文件命令 瀏覽:582
新時代交互英語軟體伺服器地址 瀏覽:780
安卓傳數據到已激活蘋果怎麼傳 瀏覽:973
化妝pdf 瀏覽:137
編程語言專業難學嗎 瀏覽:492
酷狗的dns伺服器是什麼 瀏覽:752
單片機p1口都要拉電阻嗎 瀏覽:778
單片機程序拷貝 瀏覽:775
表面分析pdf 瀏覽:769
怎麼用php寫介面 瀏覽:421
澳門使用什麼app 瀏覽:562