亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3683 | 回復(fù): 5
打印 上一主題 下一主題

[C++] [結(jié)貼]指向數(shù)組的指針,一種不需要取地址,一種需要取地址,為什么? [復(fù)制鏈接]

論壇徽章:
1
2015元宵節(jié)徽章
日期:2015-03-06 15:53:22
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-04-23 21:07 |只看該作者 |倒序瀏覽
本帖最后由 sentto2 于 2015-04-24 20:41 編輯

如題,有下面的代碼:

  1. int main()
  2. {
  3.     int buf[2] = { 1, 3 };
  4.     int* pi = buf;
  5.     int(*pj)[2] = &buf;
  6.     return 0;
  7. }
復(fù)制代碼
可以看到,直接把buf賦值給一個int*沒有問題。
而int(*pj)[2]聲明了一個指針,指向int[2],給他賦值卻必須取buf的地址,否則編譯失敗。

這是為什么呢? 為什么pi賦值不需要取地址,pj賦值都需要去地址呢? 都是指向int數(shù)組的指針啊?

論壇徽章:
154
2022北京冬奧會紀念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16賽季CBA聯(lián)賽之深圳
日期:2022-11-02 14:02:4515-16賽季CBA聯(lián)賽之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16賽季CBA聯(lián)賽之八一
日期:2023-11-04 19:23:5115-16賽季CBA聯(lián)賽之廣夏
日期:2023-12-13 18:09:34
2 [報告]
發(fā)表于 2015-04-23 21:44 來自手機 |只看該作者
有個是指針,還有個是指針的指針

論壇徽章:
1
2015年亞洲杯之朝鮮
日期:2015-04-24 14:51:09
3 [報告]
發(fā)表于 2015-04-24 10:09 |只看該作者
    int* pi = buf;              //這里pi 類型是 int *,  buf類型是int [2],int【2]相當于int *,類型匹配,直接賦值沒有問題
    int(*pj)[2] = & buf;    // pj是 int (*)[2]類型,&buf的類型int (*)[2],類型匹配,直接賦值沒有問題
    int(*pj)[2] = buf;       // pj是 int (*)[2]類型,buf的類型int [2],直接賦值會提示指針類型不匹配,這只是個警告,但是可以編譯通過,只不過是把地址從int [2]強制轉(zhuǎn)換成了int (*)[2]

論壇徽章:
0
4 [報告]
發(fā)表于 2015-04-24 13:30 |只看該作者
指針和指針數(shù)組的區(qū)別
int* pi = buf;//pi是指針,指向buf數(shù)組
int(*pj)[2] = &buf;//pj[2]是指針數(shù)組,數(shù)組的元素是指針

論壇徽章:
1
2015年亞洲杯之朝鮮
日期:2015-04-24 14:51:09
5 [報告]
發(fā)表于 2015-04-24 14:54 |只看該作者
zhangbo357 發(fā)表于 2015-04-24 13:30
指針和指針數(shù)組的區(qū)別
int* pi = buf;//pi是指針,指向buf數(shù)組
int(*pj)[2] = &buf;//pj[2]是指針數(shù)組,數(shù) ...


pj首先是個指針,其次是個數(shù)組指針(而非指針數(shù)組),指向int數(shù)組,元素是int類型

論壇徽章:
0
6 [報告]
發(fā)表于 2015-05-23 18:48 |只看該作者
int main()
{
    int buf[2] = { 1, 3 };
    int* pi = buf;
    int(*pj)[2] = &buf;
    return 0;
}

1.  &buf 是整個數(shù)組的首地址,buf是數(shù)組首元素的首地址,雖然它們地址的值相同但是類型意義不同。
2. 在C 語言里,賦值符號“=”號兩邊的數(shù)據(jù)類型必須是相同的,如果不同需要顯示或隱式的類型轉(zhuǎn)換。pi 這個定義的“=”號兩邊的數(shù)據(jù)類型完全一致(指向一個整數(shù)的指針),
    如果 int(*pj)[2] = buf; 那么“=”號兩邊的數(shù)據(jù)類型就不一致了。左邊的類型是指向整個數(shù)組的指針,右邊的數(shù)據(jù)類型是指向單個整數(shù)的指針。所以編譯會失敗。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP