(大累格) 字串,指標,陣列 原來是同一件事

說出來很蠢,我今天才真正了解到這層意義......醍醐味

以前讀書時就有看過了,但是就是沒真正弄清楚

首先,陣列和指標是同一件事,這是早就知道的事實
而字串是一個含有 \0 結束位元的陣列,所以實際上他也是指標的一種

無怪乎字串的定義,當初是用 char * 去定義的
所以實際上字串的大小是不能動的,這就跟陣列的大小不能隨意更動一樣

不過在操作上有幾個有趣的現象
首先,字串是可以被陣列給予的(以編輯器的觀點,只是值可能會有點問題)
string = array 是可以被接受的
說真的,array[] 當用array表示時,不就是個指標嗎,指標傳指標應該不會有問題,很合理
再來,顯示字串直接使用 cout << string 就可以顯示整個字串了
不需要用 一個 for 或 while 迴圈去把一個個的元素顯示出來

再來,在應用程式來說,通常main( )可以傳參數,譬如說
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])

argc指的是所傳參數的數目 , argv[]指的是所傳參數的字串
譬如說一個叫fantest的程式 , 當執行  fantest -cpu
argc 就是 2 , argv[0] 是fantest , argv[1]是 -cpu

如果要擷取參數到程式變數中,就必須將字串轉成變數的形態的
可以用字串轉陣列的方法一個個傳進去
例如:
        for(i=0;i<20;i++){
            buffer[i] = *cString;
            cString++;
            if (buffer[i] == '\0') break;
        }
就有類似的效果
如果要的是 數字的型態,則必須使用 atoi( ) 轉換

留言

這個網誌中的熱門文章

如何在VS2022 Community 簡要的設定UDK2018的環境

自製讀取 H 檔案並找出 define 的程式

如何Build UDK2018