第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

int*p=&a[0]的含義是什么 改成int*p=&a會有什么變化

int*p=&a[0]的含義是什么 改成int*p=&a會有什么變化

C C# C++
qq_改恒_0 2017-09-10 20:11:51
查看完整描述

1 回答

已采納
?
onemoo

TA貢獻883條經(jīng)驗 獲得超454個贊

&a 表示取整個數(shù)組的地址,得到的是指向數(shù)組的指針

&a[0] 是直接取數(shù)組第一個元素的地址,得到的是 int 指針。

不過呢,雖然 &a&a[0] 的類型不同,但它們的值是一樣的。而 int *p = &a 是強行把數(shù)組指針賦值給 int 指針,所以 p 還是指向了 a 的第一個元素的地址。后續(xù)按照指向數(shù)組元素的指針來使用 p 也能正常工作。

但是注意,應該避免寫 int *p = &a 這樣的代碼。 因為這畢竟和使用意圖不符——等號左側(cè)想要的是 int 指針類型,等號右側(cè)卻是數(shù)組指針類型——等號兩側(cè)的類型本不兼容,只不過恰好值相同且被強制轉(zhuǎn)型才碰巧可以正常工作的。 ?而且這樣的代碼在編譯時會得到類型不符的警告的。


另外說一種可行的寫法:當你直接在等號右側(cè)使用數(shù)組名 a 時,就等于使用 a 的第一個元素的地址,也就是 int 指針類型。

你可以寫 int *p = a, 這和 int *p = &a[0] 是等價的。

查看完整回答
1 反對 回復 2017-09-10
  • qq_改恒_0
    qq_改恒_0
    那么 取別的如a[2]時 除了int*p=a[2] 還有別的寫法嗎
  • onemoo
    onemoo
    你可能手誤了吧,應該是 int *p = &a[2]。a[2] 是第二個元素本身,要取其地址才行。 在定義 p 時寫 int *p = &a[2] 顯然是最合適的寫法了,意圖清晰明確。 不過因為指針很靈活,若單純想要讓一個指針指向 a[2] 的話,是有很多辦法的。
  • qq_改恒_0
    qq_改恒_0
    可以幫忙列舉一下嗎 謝謝
點擊展開后面1
  • 1 回答
  • 0 關注
  • 2742 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號