回覆列表
  • 1 # 幸福學院

    C++裡cout太自作聰明瞭,為了省去我們迴圈輸出字元的麻煩,cout<<p<<endl;被翻譯為輸出p指向的字串值。這個時候要輸出p的指標值就只能先將其轉為void *再輸出。因為void型, cout沒法輸出,只能乖乖輸出指標。此外cout<<&p<<endl;是不可取的,它其實等效printf("%p/n",&p)。

    命令如下:void main(){char *p2="abcd";cout<<*p2<<endl;cout<<p2<<endl;printf("%p/n",&p2);cout<<&p2<<endl;void *p=p2;cout<<p<<endl;}輸出結果如下:0046F020才是p的值,0013FF7C實際為&p.aabcd0013FF7C0013FF7C0046F020Press any key to continue

  • 2 # 南風微涼歲月清茶

    我認為cout是類ostream的物件,而ostream的定義是typedefbasic_ostream<char>ostream,顯然ostream類是類模板basic_ostream的一個例項,ostream操作物件都是char型別。那麼cout作為類ostream的例項,必然也是以char為預設操作物件。從人的使用習慣來看也是一樣,既然呼叫了cout一般是為了輸出字元而不是一個地址。如果你是cout的開發者肯定首先想到的是輸出字串,而不是一個地址。

  • 中秋節和大豐收的關聯?
  • 維生素B12泡水可以澆花嘛?