最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c/c++那些你一定會出錯的數(shù)組筆試題匯總

 更新時間:2023年10月08日 10:36:44   作者:luming-02  
這篇文章主要給大家匯總介紹了關(guān)于c/c++那些你一定會出錯的數(shù)組筆試題,除了基本數(shù)據(jù)類型之外,其余的都作為類對象,包括數(shù)組,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言:

數(shù)組是一種基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)類型,我們允許數(shù)組中可以放置很多相同數(shù)據(jù)類型的元素,不管是在日常的開發(fā),編程,面試中,都有極為廣泛的應(yīng)用,今天,筆者就給大家?guī)硪幌盗锌此坪唵危亲銎饋韰s有不少陷阱和困難的數(shù)組面試題,相信您看完本篇文章一定會有不小的收獲

一.一維整形數(shù)組

在進行題目的聯(lián)系講解之前,我們要對以下知識點有一個基礎(chǔ)的認知:

數(shù)組名的理解:數(shù)組名是數(shù)組首元素的地址

但是有2個例外

  1. sizeof(數(shù)組名),這里的數(shù)組名表示整個數(shù)組,sizeof(數(shù)組名)計算的是整個數(shù)組的大小,單位是字節(jié)
  2. &數(shù)組名,這里的數(shù)組名表示整個數(shù)組,&數(shù)組名取出的是數(shù)組的地址

首先,我們定義一個數(shù)組,里面一共有 4 個整形元素,接下來的一維數(shù)組的所有題目都是基于此討論會有怎么樣的輸出(以32位機器為例)

//一維數(shù)組
int a[] = { 1,2,3,4 };
//4個元素,每個元素使int類型(4個字節(jié))

題目一:

printf("%d\n", sizeof(a));

輸出結(jié)果:16 

數(shù)組名 a 單獨放在sizeof內(nèi)部,數(shù)組名表示整個數(shù)組,計算的是整個數(shù)組的大小單位是字節(jié),是 16 字節(jié) 

題目二:

printf("%d\n", sizeof(a + 0));

輸出結(jié)果:4 

a 并非單獨放在sizeof內(nèi)部,也沒有 &,所以數(shù)組名a是數(shù)組首元素的地址,a+0還是首元素的地址,是地址大小就是 4/8 Byte

題目三:

printf("%d\n", sizeof(*a));

輸出結(jié)果:4 

a 并非單獨放在 sizeof 內(nèi)部,也沒有 &,所以數(shù)組名 a 是數(shù)組首元素的地址,*a 就是首元素,大小就是 4 Byte ,*a == *(a+0) == a[0]

題目四:

printf("%d\n", sizeof(a + 1));

輸出結(jié)果:

a 并非單獨放在 sizeof 內(nèi)部,也沒有 &,所以數(shù)組名 a 是數(shù)組首元素的地址,a+1 就是第二個元素的地址,a+1 == &a[1] ,是第2個元素的地址,是地址就是 4/8 個字節(jié)

題目五:

printf("%d\n", sizeof(a[1]));

輸出結(jié)果:4

a[1] 就是數(shù)組的第二個元素,這里計算的就是第二個元素的大小,單位是字節(jié)

題目六:

printf("%d\n", sizeof(&a));

輸出結(jié)果:

&a - 是取出數(shù)組的地址,但是數(shù)組的地址也是地址,是地址就是4/8個Byte,數(shù)組的地址 和 數(shù)組首元素的地址 的本質(zhì)區(qū)別是類型的區(qū)別,并非大小的區(qū)別

題目七:

printf("%d\n", sizeof(*&a));

輸出結(jié)果:16 

對數(shù)組指針解引用訪問一個數(shù)組的大小,單位是字節(jié),sizeof(*&a) --- sizeof(a)

題目八:

printf("%d\n", sizeof(&a + 1));

輸出結(jié)果:

&a 數(shù)組的地址,&a+1 還是地址,是地址就是 4/8 個字節(jié)

題目九:

printf("%d\n", sizeof(&a[0]));

輸出結(jié)果:

&a[0] 是首元素的地址, 計算的是地址的大小 4/8 個字節(jié)

題目十:

printf("%d\n", sizeof(&a[0] + 1));

 輸出結(jié)果:4 

&a[0] 是首元素的地址,&a[0]+1 就是第二個元素的地址,大小 4/8 個字節(jié)

二.一維字符數(shù)組 

首先,我們定義一個字符型數(shù)組,接下來的數(shù)組的所有題目都是基于此討論會有怎么樣的輸出(以32位機器為例)

//字符數(shù)組
char arr[] = { 'a','b','c','d','e','f' };//6 個元素

題目一:

printf("%d\n", sizeof(arr));

輸出結(jié)果:

數(shù)組名 arr 單獨放在 sizeof 內(nèi)部,計算的是整個數(shù)組的大小,單位是字節(jié)

題目二:

printf("%d\n", sizeof(arr + 0));

輸出結(jié)果:

arr 是首元素的地址==&arr[0],是地址就是 4/8 個字節(jié)

題目三:

printf("%d\n", sizeof(*arr));

輸出結(jié)果:1 

arr是首元素的地址,*arr就是首元素,大小就是1Byte

題目四:

printf("%d\n", sizeof(arr[1]));

輸出結(jié)果:

訪問數(shù)組第一個元素大小,為char類型

題目五:

printf("%d\n", sizeof(&arr));

輸出結(jié)果:

&arr是數(shù)組的地址,sizeof(&arr)就是 4/8 個字節(jié)

題目六:

printf("%d\n", sizeof(&arr + 1));

輸出結(jié)果:

&arr+1 是跳過數(shù)組后的地址,是地址就是 4/8 個字節(jié)

題目七:

printf("%d\n", sizeof(&arr[0] + 1));

輸出結(jié)果:

第二個元素的地址,是地址就是 4/8 Byte

三.二維數(shù)組 

我們初始化二維數(shù)組如下,接下來的數(shù)組的所有題目都是基于此討論會有怎么樣的輸出(以32位機器為例)

int a[3][4] = { 0 };

題目一:

printf("%zd\n", sizeof(a));

輸出結(jié)果:48 

數(shù)組名 a 單獨放在了 sizeof 內(nèi)存,表示整個數(shù)組,sizeof(a) 計算的是數(shù)組的大小,單位是字節(jié)

題目二:

printf("%zd\n", sizeof(a[0][0]));

輸出結(jié)果:

a[0][0] 是數(shù)組的第一行第一個元素,這里計算的就是一個元素的大小,單位是字節(jié) 

題目三:

printf("%zd\n", sizeof(a[0]));

輸出結(jié)果:16 

a[0] 是第一行這個一維數(shù)組的數(shù)組名,數(shù)組名單獨放在了 sizeof 內(nèi)部,sizeof(a[0]) 計算的整個第一行這個一維數(shù)組的大小

題目四:

printf("%zd\n", sizeof(a[0] + 1));

輸出結(jié)果:

        a[0] 并非單獨放在 sizeof 內(nèi)部,也沒有 &,所以 a[0] 表示第一行這個一維數(shù)組首元素的地址,也就是第一行第一個元素的地址

        a[0] <---> &a[0][0]

        a[0]+1 ---> &a[0][1]

題目五:

printf("%zd\n", sizeof(*(a[0] + 1)));

輸出結(jié)果:

        a[0] + 1是第一行第二個元素的地址,*(a[0] + 1))就是第一行第二個元素

題目六:

printf("%zd\n", sizeof(a + 1));

 輸出結(jié)果:

        a 作為二維數(shù)組的數(shù)組名,并沒有單獨放在 sizeof 內(nèi)部,也沒有 &,a 就是數(shù)組首元素的地址,也就是第一行的地址, a 的類型是 int(*)[4],a+1 就是第二行的地址,類型是:int(*)[4] 

題目七:

printf("%zd\n", sizeof(*(a + 1)));

輸出結(jié)果:16 

        a+1是第二行的地址,*(a+1)就是第二行,計算的就是第二行的大小

        另外一個角度理解:*(a+1) -- a[1],sizeof(a[1]) - a[1] 這個第二行的數(shù)組名,單獨放在了 sizeof 內(nèi)部,計算的是第二行的大小

題目八:

printf("%zd\n", sizeof(&amp;a[0] + 1));

輸出結(jié)果:4 

        a[0] 是第一行的數(shù)組名,&a[0] 取出的是數(shù)組的地址,取出的是第一行這個一維數(shù)組的地址,類型就是 int(*)[4] ,&a[0]+1 就是第二行的地址,類型就是 int(*)[4]

題目九:

printf("%zd\n", sizeof(*(&amp;a[0] + 1)));

輸出結(jié)果:16 

        *(&a[0] + 1) 得到的就是第二行,計算的就是第二行的大小

題目十:

printf("%zd\n", sizeof(*a));

輸出結(jié)果:16 

        a 表示數(shù)組首元素的地址,也就是第一行的地址,*a 就是第一行,也就相當(dāng)于是第一行的數(shù)組名,*a--> *(a+0) -- a[0]

題目十一: 

printf("%zd\n", sizeof(a[3]));

輸出結(jié)果:16 

        輸出結(jié)果不會越界,還是作為一行的結(jié)果進行輸出,代表一行的大小,所以是 16

總結(jié) 

到此這篇關(guān)于c/c++那些你一定會出錯的數(shù)組筆試題的文章就介紹到這了,更多相關(guān)c/c++數(shù)組筆試題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實現(xiàn)STL迭代器萃取的示例代碼

    C++實現(xiàn)STL迭代器萃取的示例代碼

    迭代器是一種抽象的設(shè)計概念,它提供了一種方法,使之能夠依序巡訪某個聚合物(容器)所含的各個元素,而又無需暴露該聚合物的內(nèi)部表述方式。本文主要介了STL迭代器萃取的方法,需要的可以參考一下
    2022-11-11
  • Opencv Hough算法實現(xiàn)圖片中直線檢測

    Opencv Hough算法實現(xiàn)圖片中直線檢測

    這篇文章主要為大家詳細介紹了Opencv Hough算法實現(xiàn)圖片中直線檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • CString,字符串,整數(shù)等相互轉(zhuǎn)換方法(推薦)

    CString,字符串,整數(shù)等相互轉(zhuǎn)換方法(推薦)

    下面小編就為大家?guī)硪黄狢String,字符串,整數(shù)等相互轉(zhuǎn)換方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • C++ 中assert()函數(shù)用法總結(jié)

    C++ 中assert()函數(shù)用法總結(jié)

    這篇文章主要介紹了C++ 中assert()函數(shù)用法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • C++線性表深度解析之動態(tài)數(shù)組與單鏈表和棧及隊列的實現(xiàn)

    C++線性表深度解析之動態(tài)數(shù)組與單鏈表和棧及隊列的實現(xiàn)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)動態(tài)數(shù)組、單鏈表、棧、隊列,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C語言如何建立鏈表并實現(xiàn)增刪查改詳解

    C語言如何建立鏈表并實現(xiàn)增刪查改詳解

    這篇文章主要給大家介紹了關(guān)于C語言如何建立鏈表并實現(xiàn)增刪查改的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用C語言具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • VC6.0如何創(chuàng)建以及調(diào)用動態(tài)鏈接庫實例詳解

    VC6.0如何創(chuàng)建以及調(diào)用動態(tài)鏈接庫實例詳解

    作為客戶與后臺的中介,為了更好的調(diào)節(jié)兩方的關(guān)系,我明智滴選擇了webservice以及動態(tài)鏈接庫。在與客戶c++使動態(tài)鏈接庫方式,而與后臺java,使用webservice來交流溝通
    2013-01-01
  • C語言數(shù)據(jù)結(jié)構(gòu)之線索二叉樹及其遍歷

    C語言數(shù)據(jù)結(jié)構(gòu)之線索二叉樹及其遍歷

    這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之線索二叉樹及其遍歷的相關(guān)資料,為了加快查找節(jié)點的前驅(qū)和后繼。對二叉樹的線索化就是對二叉樹進行一次遍歷,在遍歷的過程中檢測節(jié)點的左右指針是否為空,如果是空,則將他們改為指向前驅(qū)和后繼節(jié)點的線索,需要的朋友可以參考下
    2017-08-08
  • C/C++實現(xiàn)監(jiān)控目錄文件變化

    C/C++實現(xiàn)監(jiān)控目錄文件變化

    ReadDirectoryChangesW是Windows操作系統(tǒng)提供的一個函數(shù),用于監(jiān)視目錄的變化,本文主要為大家介紹了如何使用ReadDirectoryChangesW實現(xiàn)監(jiān)控目錄文件變化,需要的可以參考下
    2023-11-11
  • C++中Semaphore內(nèi)核對象用法實例

    C++中Semaphore內(nèi)核對象用法實例

    這篇文章主要介紹了C++中Semaphore內(nèi)核對象用法實例,有助于深入了解信號量(Semaphore)的基本用法,需要的朋友可以參考下
    2014-10-10

最新評論

衢州市| 新安县| 永济市| 绥中县| 临海市| 沙坪坝区| 黎平县| 章丘市| 隆回县| 文成县| 望城县| 枣庄市| 昌宁县| 天柱县| 常熟市| 垦利县| 海门市| 西华县| 荔浦县| 玉龙| 确山县| 若羌县| 松潘县| 绥中县| 肃北| 哈密市| 息烽县| 平安县| 英山县| 镇赉县| 蒙山县| 济宁市| 张家界市| 新竹县| 平顺县| 茂名市| 祁连县| 江永县| 长海县| 余姚市| 沙坪坝区|