0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

數(shù)組名是不是指針

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2023-06-25 17:06 ? 次閱讀

數(shù)組到底是不是指針?這個(gè)問題隔三岔五就會(huì)被問一遍。其實(shí)只要搞清楚他們的原理,并且能熟練的使用,完全沒有必要糾結(jié)這個(gè)問題。

數(shù)組是內(nèi)存中的一塊連續(xù)內(nèi)存,之所以他能跟指針扯上關(guān)系,是因?yàn)閿?shù)組名表示了數(shù)組第一個(gè)元素的地址,于是很多同學(xué)就認(rèn)為數(shù)組名是指針。

準(zhǔn)確的講,數(shù)組名也只是個(gè)標(biāo)識符,方便用戶使用罷了。

把它理解成地址常量更合適一些。

所以對數(shù)組名加加這個(gè)操作,編譯器是不允許的。

int array[5] = {1, 2, 3, 4, 5};
array++;
但是訪問元素的時(shí)候,只要你不去修改數(shù)組名,用起來跟指針沒什么區(qū)別。
int array[5] = {1, 2, 3, 4, 5};
*(array + 1);

指針在計(jì)算機(jī)里面也是一塊內(nèi)存,不過只是一個(gè)單獨(dú)的元素,不像數(shù)組,可以由多個(gè)元素組成。一般占4字節(jié)或者8字節(jié)。它里面保存的是其他內(nèi)存的地址。

所以指針用起來就比較靈活,在合法的情況下,可以來回移動(dòng)。

如果現(xiàn)在有個(gè)數(shù)組,把數(shù)組第一個(gè)元素的地址保存在指針里面,那訪問數(shù)組元素既可以用取值的方式,又可以用數(shù)組下標(biāo)的方式。
int array[5] = {1, 2, 3, 4, 5};
int*p=array;
p[1];
*(p + 1);

總結(jié)一下,數(shù)組和指針是兩個(gè)不同的東西,嚴(yán)格來講,不能把數(shù)組等同于指針,包括數(shù)組名,也不能等價(jià)于指針,只是很多場景下,他們可以互相表示。

作為初學(xué)者,我也不太建議去糾結(jié)這樣的問題,這個(gè)問題也只有在面試的時(shí)候會(huì)遇到,學(xué)習(xí)的時(shí)候,把他們原理搞清楚,能正確的使用數(shù)組名或者指針去訪問數(shù)據(jù),也就足夠了。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3025

    瀏覽量

    74056
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    480

    瀏覽量

    70564
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    417

    瀏覽量

    25947

原文標(biāo)題:數(shù)組名是不是指針

文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    C語言數(shù)組名指針

    指針是C/C++語言的特色,而數(shù)組名指針有太多的相似,甚至很多時(shí)候,數(shù)組名可以作為指針使用。于是乎,很多程序設(shè)計(jì)者就被搞糊涂了。而許多的大
    發(fā)表于 08-27 17:48 ?729次閱讀

    C語言中指針數(shù)組數(shù)組指針的區(qū)別

    指針數(shù)組之間存在著緊密的關(guān)系。在本文中,我們將探討指針數(shù)組的關(guān)系、指針算術(shù)和數(shù)組遍歷、多維
    發(fā)表于 08-17 15:29 ?413次閱讀

    從編譯器角度分析C語言中數(shù)組名指針的區(qū)別

    。也許這樣的聲明可以編譯通過(在gcc下通過了),但是把一個(gè)數(shù)組名當(dāng)成一個(gè)指針來使用,別指望它能運(yùn)行起來。第二,指針是一個(gè)變量,而數(shù)組名不是
    發(fā)表于 06-23 23:36

    C語言——指針數(shù)組和函數(shù)

    C語言——指針、數(shù)組和函數(shù)基本解釋   1、指針的本質(zhì)是一個(gè)與地址相關(guān)的復(fù)合類型,它的值是數(shù)據(jù)存放的位置(地址);數(shù)組的本質(zhì)則是一系列的變量。   2、
    發(fā)表于 04-20 15:25

    指針數(shù)組數(shù)組指針的區(qū)別

    這里我們區(qū)分兩個(gè)重要的概念:指針數(shù)組、數(shù)組指針。
    的頭像 發(fā)表于 06-29 15:30 ?2w次閱讀
    <b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>和<b class='flag-5'>數(shù)組</b><b class='flag-5'>指針</b>的區(qū)別

    理解函數(shù)指針、函數(shù)指針數(shù)組、函數(shù)指針數(shù)組指針

    理解函數(shù)指針、函數(shù)指針數(shù)組、函數(shù)指針數(shù)組指針
    的頭像 發(fā)表于 06-29 15:38 ?1.5w次閱讀
    理解函數(shù)<b class='flag-5'>指針</b>、函數(shù)<b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>、函數(shù)<b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>的<b class='flag-5'>指針</b>

    C語言中指針數(shù)組

    #define SIZE 10int arry[SIZE]={0,1,2,3,4,5,6,7,8,9}; //數(shù)組名arry表示數(shù)組首元素的地址*int p,temp;//可直接初始化定義指針
    發(fā)表于 01-13 13:11 ?3次下載
    C語言中<b class='flag-5'>指針</b>與<b class='flag-5'>數(shù)組</b>

    C語言指針數(shù)組的區(qū)別

    在C語言教程中我們使用通過數(shù)組名通過偏移和指針偏移都可以遍歷數(shù)組,那么指針數(shù)組到底有什么區(qū)別??
    的頭像 發(fā)表于 07-18 16:29 ?1930次閱讀

    二維數(shù)組數(shù)組指針以及指針數(shù)組

    二維數(shù)組數(shù)組指針以及指針數(shù)組
    的頭像 發(fā)表于 08-16 09:02 ?2675次閱讀

    C語言數(shù)組元素的指針

    C語言調(diào)用函數(shù)時(shí)虛實(shí)結(jié)合的方法都是采用“值傳遞”方式,當(dāng)用變量名作為函數(shù)參數(shù)時(shí)傳遞的是變量的值,當(dāng)用數(shù)組名作為函數(shù)參數(shù)時(shí)。 由于數(shù)組名代表的是數(shù)組元素地址,因此傳遞的值是地址,所以要去形參為
    的頭像 發(fā)表于 03-10 14:45 ?918次閱讀

    C++數(shù)組名數(shù)組拷貝詳解

    C++數(shù)組間賦值不能直接通過數(shù)組名稱 randy = sesame進(jìn)行,因?yàn)?b class='flag-5'>數(shù)組名并不是指針,大部分情況下,編譯器會(huì)隱式轉(zhuǎn)換為指向
    發(fā)表于 08-21 15:09 ?470次閱讀
    C++<b class='flag-5'>數(shù)組名</b>和<b class='flag-5'>數(shù)組</b>拷貝詳解

    數(shù)組指針不能混用的情況

    指針的基本概念。數(shù)組是一組相同類型的元素的集合,而指針是一個(gè)變量,它存儲(chǔ)了一個(gè)地址,該地址指向內(nèi)存中的某個(gè)位置。在 C/C++ 中,數(shù)組名稱可以當(dāng)作指向
    的頭像 發(fā)表于 12-07 13:46 ?611次閱讀

    數(shù)組指針不相同嗎?數(shù)組指針有哪些區(qū)別

    數(shù)組就是指針,指針就是數(shù)組,這樣的言論在評論區(qū)看到不下于10次。
    的頭像 發(fā)表于 12-13 16:34 ?1516次閱讀
    <b class='flag-5'>數(shù)組</b>和<b class='flag-5'>指針</b>不相同嗎?<b class='flag-5'>數(shù)組</b>和<b class='flag-5'>指針</b>有哪些區(qū)別

    面試???1:函數(shù)指針指針函數(shù)、數(shù)組指針指針數(shù)組

    在嵌入式開發(fā)領(lǐng)域,函數(shù)指針指針函數(shù)、數(shù)組指針指針數(shù)組是一些非常重要但又容易混淆的概念。理解它
    的頭像 發(fā)表于 08-10 08:11 ?861次閱讀
    面試???1:函數(shù)<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>函數(shù)、<b class='flag-5'>數(shù)組</b><b class='flag-5'>指針</b>與<b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>

    數(shù)組名之間可以直接賦值嗎

    ; ????return 0;} 想把數(shù)組 a 里面的數(shù)據(jù)全部賦值給 b,寫成 b = a 行不行? 和這個(gè)問題類似的還有,數(shù)組名為什么不能進(jìn)行 ++ 操作? char?array[5]?=?{0};array++; 比如
    的頭像 發(fā)表于 11-26 11:23 ?143次閱讀