欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言:

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

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

在進(jìn)行題目的聯(lián)系講解之前,我們要對(duì)以下知識(shí)點(diǎn)有一個(gè)基礎(chǔ)的認(rèn)知:

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

但是有2個(gè)例外

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

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

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

題目一:

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

輸出結(jié)果:16 

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

題目二:

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

輸出結(jié)果:4 

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

題目三:

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

輸出結(jié)果:4 

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

題目四:

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

輸出結(jié)果:

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

題目五:

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

輸出結(jié)果:4

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

題目六:

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

輸出結(jié)果:

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

題目七:

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

輸出結(jié)果:16 

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

題目八:

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

輸出結(jié)果:

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

題目九:

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

輸出結(jié)果:

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

題目十:

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

 輸出結(jié)果:4 

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

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

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

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

題目一:

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

輸出結(jié)果:

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

題目二:

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

輸出結(jié)果:

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

題目三:

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

輸出結(jié)果:1 

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

題目四:

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

輸出結(jié)果:

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

題目五:

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

輸出結(jié)果:

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

題目六:

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

輸出結(jié)果:

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

題目七:

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

輸出結(jié)果:

第二個(gè)元素的地址,是地址就是 4/8 Byte

三.二維數(shù)組 

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

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

題目一:

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

輸出結(jié)果:48 

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

題目二:

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

輸出結(jié)果:

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

題目三:

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

輸出結(jié)果:16 

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

題目四:

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

輸出結(jié)果:

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

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

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

題目五:

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

輸出結(jié)果:

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

題目六:

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

 輸出結(jié)果:

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

題目七:

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

輸出結(jié)果:16 

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

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

題目八:

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

輸出結(jié)果:4 

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

題目九:

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

輸出結(jié)果:16 

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

題目十:

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é)果不會(huì)越界,還是作為一行的結(jié)果進(jìn)行輸出,代表一行的大小,所以是 16

總結(jié) 

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

相關(guān)文章

  • 平衡二叉樹的實(shí)現(xiàn)實(shí)例

    平衡二叉樹的實(shí)現(xiàn)實(shí)例

    這篇文章主要介紹了平衡二叉樹的實(shí)現(xiàn)實(shí)例,需要的朋友可以參考下
    2014-02-02
  • C++ Boost實(shí)現(xiàn)異步端口掃描器詳解

    C++ Boost實(shí)現(xiàn)異步端口掃描器詳解

    端口掃描是一種用于識(shí)別目標(biāo)系統(tǒng)上哪些網(wǎng)絡(luò)端口處于開放、關(guān)閉或監(jiān)聽狀態(tài)的網(wǎng)絡(luò)活動(dòng),本文將運(yùn)用Boost框架實(shí)現(xiàn)一個(gè)基于TCP的掃描工具,有需要的小伙伴可以參考下
    2023-11-11
  • C++如何計(jì)算結(jié)構(gòu)體與對(duì)象的大小

    C++如何計(jì)算結(jié)構(gòu)體與對(duì)象的大小

    這篇文章主要給大家介紹了關(guān)于C++如何計(jì)算結(jié)構(gòu)體與對(duì)象大小的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • C語言連接并操作Sedna XML數(shù)據(jù)庫的方法

    C語言連接并操作Sedna XML數(shù)據(jù)庫的方法

    這篇文章主要介紹了C語言連接并操作Sedna XML數(shù)據(jù)庫的方法,實(shí)例分析了C語言操作XML文件的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • OpenCV實(shí)現(xiàn)圖像距離變換

    OpenCV實(shí)現(xiàn)圖像距離變換

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)圖像距離變換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C語言實(shí)現(xiàn)逆序輸出詳細(xì)

    C語言實(shí)現(xiàn)逆序輸出詳細(xì)

    這篇文章主要介紹了C語言實(shí)現(xiàn)逆序輸出。主要實(shí)現(xiàn)C語言實(shí)現(xiàn)對(duì)數(shù)組元素依次賦值然后按照逆序輸出,下面文章小編將詳細(xì)解說,需要的朋友可以參考一下
    2021-10-10
  • C語言實(shí)現(xiàn)簡單的井字棋游戲

    C語言實(shí)現(xiàn)簡單的井字棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單的井字棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 簡單掌握C++中的函數(shù)模板

    簡單掌握C++中的函數(shù)模板

    這篇文章主要介紹了C++中的函數(shù)模板,包括函數(shù)模板的聲明和生成以及異常處理等基本知識(shí),需要的朋友可以參考下
    2016-04-04
  • C程序中Ubuntu、stm32的內(nèi)存分配問題

    C程序中Ubuntu、stm32的內(nèi)存分配問題

    這篇文章主要介紹了C程序中Ubuntu、stm32的內(nèi)存分配問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • C語言判斷一個(gè)數(shù)是否為素?cái)?shù)方法解析

    C語言判斷一個(gè)數(shù)是否為素?cái)?shù)方法解析

    這篇文章主要介紹了C語言判斷一個(gè)數(shù)是否為素?cái)?shù)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論