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

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

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

指針數(shù)組和二維數(shù)組有沒有區(qū)別

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2024-11-24 11:12 ? 次閱讀

指針數(shù)組和二維數(shù)組有沒有區(qū)別?比如這樣的兩個代碼。

int main()
{
    char *s1[] = {
        "hello",
        "world",
        "total"
    };  

    char s2[][6] = { 
        "hello",
        "world",
        "total"
    };  


    return 0;
}

從后面的初始化方式可以看出,他們好像一樣,里面都保存了三個字符串。

想要搞清楚他們的區(qū)別,還得看下他們在內(nèi)存中的排布。

首先是指針數(shù)組 s1。

s1 本身是個一維數(shù)組,數(shù)組有三個元素,每個元素都是個指針。如果是 64 位系統(tǒng),三個指針就占了 24 個字節(jié)。

使用 sizeof 計算 s1 的大小,結(jié)果就是 24。

三個指針指向三個字符串,而且這三個字符串存放在只讀數(shù)據(jù)區(qū),不能修改,嘗試通過指針 s1[0] 去修改元素 h,程序會異常。

s2 本身是個二維數(shù)組,三行六列,每一行都存放一個字符串。使用 sizeof 計算 s2 的大小,結(jié)果是 18。

在這個案例中 s2 是個局部變量,于是這三個字符串存放在棧空間,可讀可寫。通過 s2 可以隨意修改。

要說他倆的相同點(diǎn),就是使用起來基本一樣,要想訪問字符串里面的元素,完全可以把 s1 當(dāng)成二維數(shù)組,通過下標(biāo)的形式去訪問。

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

    關(guān)注

    1

    文章

    483

    瀏覽量

    70711
  • 二維
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

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

    關(guān)注

    1

    文章

    418

    瀏覽量

    26111

原文標(biāo)題:指針數(shù)組和二維數(shù)組

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

收藏 人收藏

    評論

    相關(guān)推薦

    stm32 DMA串口接收到數(shù)組數(shù)組元素順序錯亂怎么解決?

    DMA循環(huán)原理——數(shù)組里的數(shù)據(jù)至此之后永遠(yuǎn)都是AAAB,如何才能讓它重新變成AABA呢?有沒有辦法能找到DMA自動遞增的那個指針?把那個自動遞增指針重新給它置零?
    發(fā)表于 03-12 08:02

    請問LabView中如何直接發(fā)送二維數(shù)組到DMD上顯示?

    LabView中如何直接發(fā)送二維數(shù)組到DMD上顯示。 在LabView中,調(diào)用int LoadData(UCHAR*RowData,long length)遇到兩個問題,1 二維數(shù)組
    發(fā)表于 02-27 07:30

    Labivew 實(shí)現(xiàn)鼠標(biāo)在數(shù)組中選中元素時,精準(zhǔn)的顯示所在位置的行、列值方法

    在項目開發(fā)中,遇到一個布爾的二維數(shù)組輸入控件,選中數(shù)組元素并索引出行列的操作,試過其他大佬的方法,不是特別精準(zhǔn),,嘗試一下還可以,分享給需要的朋友 *附件:選中二維
    發(fā)表于 12-21 18:07

    C語言數(shù)組應(yīng)用計算機(jī)導(dǎo)論A第6講:數(shù)組

    C語言數(shù)組應(yīng)用計算機(jī)導(dǎo)論A第6講:數(shù)組
    發(fā)表于 11-20 15:33 ?0次下載

    C語言指針運(yùn)算符詳解

    在C語言中,當(dāng)你有一個指向數(shù)組中某個元素的指針時,你可以對該指針執(zhí)行某些算術(shù)運(yùn)算,例如加法或減法。這些運(yùn)算可以用來遍歷數(shù)組中的元素,如ptr[i]等價于*(ptr + i)。然而,如果
    的頭像 發(fā)表于 10-30 11:16 ?391次閱讀

    labview按行讀取二維數(shù)組之后再按讀取順序重新組成二維數(shù)組如何實(shí)現(xiàn)?

    labview用了index Array按索引一行行讀取二維數(shù)組之后想再按讀取順序重新組成一個二維數(shù)組如何實(shí)現(xiàn),即第一次讀取的作為第一行,第
    發(fā)表于 10-25 21:06

    請問labview是否無法向matlab傳遞3數(shù)組

    經(jīng)過一些測試,發(fā)現(xiàn)在matlab script中只能傳二維數(shù)組,利用打包.net庫,好像還是只能傳遞二維數(shù)組。 是不是從底層就不支持,這兩種語言的三
    發(fā)表于 10-22 20:14

    C語言指針詳細(xì)解析

    數(shù)組數(shù)組二維數(shù)組名可以看做指向其第一個元素(一數(shù)組
    發(fā)表于 09-14 10:03

    labview字符串數(shù)組轉(zhuǎn)化為數(shù)值數(shù)組

    在LabVIEW中,將字符串數(shù)組轉(zhuǎn)換為數(shù)值數(shù)組是一項常見的任務(wù),尤其是在處理數(shù)據(jù)采集、信號處理或用戶輸入時。 1. 理解LabVIEW的數(shù)據(jù)類型 在開始之前,了解LabVIEW中的數(shù)據(jù)類型是非
    的頭像 發(fā)表于 09-04 17:47 ?3492次閱讀

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

    在嵌入式開發(fā)領(lǐng)域,函數(shù)指針、指針函數(shù)、數(shù)組指針指針數(shù)組是一些非常重要但又容易混淆的概念。理解它
    的頭像 發(fā)表于 08-10 08:11 ?1069次閱讀
    面試???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ù)組基本操作方法

    C語言零長度數(shù)組,聽起來可能有點(diǎn)奇怪,因?yàn)樗?b class='flag-5'>沒有分配內(nèi)存空間,無法存儲數(shù)據(jù)。但實(shí)際上,零長度數(shù)組在Linux內(nèi)核中隨處可見。 零長度數(shù)組的定義 首先,我們要明白什么是零長度
    的頭像 發(fā)表于 05-11 08:49 ?1109次閱讀
    嵌入式中零長度<b class='flag-5'>數(shù)組</b>基本操作方法

    數(shù)組的轉(zhuǎn)換到二維數(shù)組后的行列增減問題

    請大佬指點(diǎn),如VI,兩個求助點(diǎn): 1、一數(shù)組大小,在停止Vi前把數(shù)組大小增加到4,在循環(huán)外設(shè)置了一數(shù)組的行數(shù)為0了,為啥再次運(yùn)行VI后,
    發(fā)表于 05-11 00:25

    深入探索KUKA KRL中的數(shù)組應(yīng)用

    如果 CHAR 類型數(shù)組的所有數(shù)組元素都擁有相同的字符串,則不必單獨(dú)初始化每個數(shù)組元素。忽略右側(cè)的數(shù)組下標(biāo)。(對于一
    的頭像 發(fā)表于 04-18 10:37 ?1414次閱讀
    深入探索KUKA KRL中的<b class='flag-5'>數(shù)組</b>應(yīng)用

    怎么在Framewin里顯示二維碼?

    各位前輩好,剛剛開始使用STemWin?,F(xiàn)在一個Framewin里顯示二維碼,在Framewin初始化里調(diào)用二維碼函數(shù)沒有反應(yīng)。請問需要怎么調(diào)用?
    發(fā)表于 04-16 08:27

    鴻蒙TypeScript入門學(xué)習(xí)第11天【Array(數(shù)組)】

    數(shù)組對象是使用單獨(dú)的變量名來存儲一系列的值。 數(shù)組非常常用。
    的頭像 發(fā)表于 04-09 14:38 ?1372次閱讀
    鴻蒙TypeScript入門學(xué)習(xí)第11天【Array(<b class='flag-5'>數(shù)組</b>)】