引用:
Originally posted by phonxe
有時候pointer跟array是可以混著用,
compiler會自動幫你處理好,如:
char p1[]="01234";
char* p2="01234";
cout<< p1 << " " << p2 <<endl;
cout<< p1[0] << " " << p2[0] <<endl;
前後都會有相同的輸出 :
01234 01234
0 0
cout<< sizeof(p1) << " " << sizeof(p2) <<endl;
但這會輸出什麼呢?
答案是:
6 4
sizeof(p1) 等於 6:
因為 p1 是個array,內容為 "01234" + '\0' 共六個 byte
而 sizeof(p2) 等於 4:
因為 p2 是個 pointer ,在 32bits 的電腦架構下就是 32bits==4bytes
至於 p2 指到的內容 "01234\0" 則是用另外的記憶體空間來儲存
|
------------------------------------------------------------------
很感謝大大您參與討論唷
1)但是您這部份
char* p2="01234";
小弟看不太懂唷
p2宣告為char型態的指標
但指標不是都儲存"值在記憶體的位置"嗎?
可以直接這樣指定值嗎?
2)還有您做了以下宣告
char* p2="01234";
但又
cout<< p1[0] << " " << p2[0] <<endl;
p2又沒被宣告為array
為何可以cout <<p2[0]?
請給小弟點意見,謝謝