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

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

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

如何用指針數(shù)組和數(shù)組指針來表示二維數(shù)組?

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

如何用指針數(shù)組和數(shù)組指針來表示二維數(shù)組?

今天來給大家分享一道經(jīng)典的筆試題。

1047cc5a-bbcc-11ed-bfe3-dac502259ad0.png ?

a是一個二維數(shù)組,3 行 4 列,一共 12 個元素。

p是個數(shù)組,數(shù)組里面元素個數(shù)不詳,每個元素都是整型指針。

那么它應(yīng)該如何初始化?

首先,既然是數(shù)組,初始化一定需要一個大括號,然后里面填上多個整型指針。

int*p[]={};
那在二維數(shù)組中,能不能找到int *類型的數(shù)據(jù)?

肯定是有的。

在二維數(shù)組中,無非有這么幾種寫法:
a;
a[0];
a[0][0];
&a;
&a[0];
&a[0][0];
數(shù)組名肯定不對,它是一個二級地址;

&a更不對,它是三級地址;

a[0][0]是個具體的元素,跟地址沒有關(guān)系。

10659668-bbcc-11ed-bfe3-dac502259ad0.png ?

剩下的就是a[0]和&a[0][0]。

其實這兩個的含義一樣,都表示第一行第一個元素的地址,既然是元素的地址,那肯定就是int *類型。

于是p的初始化就可以寫成:
int*p[] = {a[0], a[1], a[2]};
分別是第一行、第二行、第三行首元素的地址。

而p后面的中括號也可以寫上3,表示數(shù)組有3個元素。
int *p[3] = {a[0], a[1], a[2]};
內(nèi)存模型畫出來就是這樣的,數(shù)組p包含三個指針,每個指針都指針二維數(shù)組每行的第一個元素。

10e5048e-bbcc-11ed-bfe3-dac502259ad0.png

再來看q。

1047cc5a-bbcc-11ed-bfe3-dac502259ad0.png ?

q是個指針,指向數(shù)組,而且是個一維數(shù)組,因為只有一個中括號,但是數(shù)組有幾個元素不詳,每個元素都是整數(shù)。

那數(shù)組a中有沒有一維數(shù)組數(shù)組呢?

當然有的,我們剛接觸二維數(shù)組的時候,老師就跟我們說過,二維數(shù)組就是由多個一維數(shù)組組成,第一行是個一維數(shù)組,第二行也是一個一維數(shù)組。

11965702-bbcc-11ed-bfe3-dac502259ad0.png ?

那我們只要把第一行的地址賦值給q就行。

于是可以把q初始化成:
int(*q)[] = a;
a表示數(shù)組第一行的地址,所以q后面的中括號也能順理成章的寫成4,因為一維數(shù)組有4個元素。
int (*q)[4] = a;
q的含義和a是一樣的,表示數(shù)組第一行的地址,q加一,就指向數(shù)組的下一行。

11b71cc6-bbcc-11ed-bfe3-dac502259ad0.png ?

這個就是C語言里面的指針數(shù)組和數(shù)組指針,怎么樣,迷糊了沒?




審核編輯:劉清

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

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135563

原文標題:分別用指針數(shù)組和數(shù)組指針表示二維數(shù)組

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

收藏 人收藏

    評論

    相關(guān)推薦

    C語言指針和數(shù)組的錯誤用法

    工作好幾年了,一直用的都是C。自認為指針應(yīng)該很熟悉了。然而,前段時間我對二維指針二維數(shù)組的一個混用,并且我們項目組的一個大牛(博士畢業(yè),工
    發(fā)表于 09-28 09:12 ?656次閱讀

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

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

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

    int (*p)[4];// 定義一個數(shù)組指針,指向含4個元素的一數(shù)組,數(shù)組元素是int類型。int *p[4];// 定義一個
    發(fā)表于 07-15 21:41

    問一個二維數(shù)組指針的問題?

    比如定義一個二維數(shù)組int a[3][5], 我們知道a是這個二維數(shù)組的首地址,a[0]是第一行元素的首地址,假設(shè)這個二維
    發(fā)表于 05-09 11:28

    數(shù)組指針的詳細講解

    數(shù)組指針的詳細講解
    發(fā)表于 10-16 08:44 ?0次下載

    C語言入門教學(xué)之數(shù)組資料總結(jié)免費下載

    二維數(shù)組的定義和二維數(shù)組元素的引用6 二維數(shù)組指針
    發(fā)表于 10-23 17:53 ?5次下載
    C語言入門教學(xué)之<b class='flag-5'>數(shù)組</b>資料總結(jié)免費下載

    C語言程序設(shè)計教程之二維數(shù)組如何應(yīng)用二維數(shù)組的資料概述

    本文檔的主要內(nèi)容詳細介紹的是C語言程序設(shè)計教程之二維數(shù)組如何應(yīng)用二維數(shù)組的資料概述主要內(nèi)容包括了:1 了解二維
    發(fā)表于 10-26 16:48 ?3次下載

    二維數(shù)組指針指向錯誤應(yīng)該如何糾正

    本文檔的主要內(nèi)容詳細介紹的是二維數(shù)組指針指向錯誤應(yīng)該如何糾正。
    發(fā)表于 12-13 16:01 ?12次下載
    <b class='flag-5'>二維</b><b class='flag-5'>數(shù)組</b>的<b class='flag-5'>指針</b>指向錯誤應(yīng)該如何糾正

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

    這里我們區(qū)分兩個重要的概念:指針數(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ù)組的區(qū)別

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

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

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

    數(shù)組何用下標表示指針

    比如題目中聲明的這個,就是由4個5行3列的二維數(shù)組組成。把這些二維數(shù)組編個號,就是 0 1 2 3。
    的頭像 發(fā)表于 11-14 10:38 ?657次閱讀
    三<b class='flag-5'>維</b><b class='flag-5'>數(shù)組</b>如<b class='flag-5'>何用</b>下標<b class='flag-5'>表示</b><b class='flag-5'>指針</b>

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

    數(shù)組指針不能混用的情況? 數(shù)組指針是 C/C++ 中非常常見的特性和概念。然而,在某些情況下,數(shù)組
    的頭像 發(fā)表于 12-07 13:46 ?528次閱讀

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

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