(大累格) 字串,指標,陣列 原來是同一件事
說出來很蠢,我今天才真正了解到這層意義......醍醐味
以前讀書時就有看過了,但是就是沒真正弄清楚
首先,陣列和指標是同一件事,這是早就知道的事實
而字串是一個含有 \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( ) 轉換
以前讀書時就有看過了,但是就是沒真正弄清楚
首先,陣列和指標是同一件事,這是早就知道的事實
而字串是一個含有 \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( ) 轉換
留言