精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

【C語言進階】數組名和指針使用sizeof有什么不同?

嵌入式物聯網開發 ? 來源:嵌入式物聯網開發 ? 作者:嵌入式物聯網開發 ? 2022-10-03 17:53 ? 次閱讀

C語言進階】數組名和指針使用sizeof有什么不同?

本文介紹一個比較常見的錯誤,是跟sizeof有關的,不知你是否有掌握呢?

1 問題說明

大家都知道在C語言中,我們會使用sizeof來求一個變量的實際內存長度,那么如果是對數組名求sizeof,以及對一個指針求sizeof,它的結果有何不一樣呢?

2 示例代碼

為此,簡單寫了一段測試代碼:

?
#include 
?
int main(int argc, const char *argv[])
{
int a[10];
int *p = &a;
?
printf("sizeof(a) = %d\\n", sizeof(a));
?
printf("sizeof(p) = %d\\n", sizeof(p));

return 0;
}

3 代碼解讀

代碼其實很簡單,先是定義了一個10個元素的整型數組,然后定義了一個指向整型類型的指針,并將指針指向數組a。

隨后對a和p,分別使用sizeof來求大小。

我們來看一下運行結果:

image-20220930212558866

從運行結果,我們可以知道,兩者是完全不一樣的。

sizeof(a),是求a數組的內存大小,理論上應該等于:10 乘以 一個整形數所占空間 = 40 字節;

而如果對指針p求sizeof,它用于等于運行機器上的指針大小,比如在32位機器上,這個值就是4字節;而我的測試機器是64位機器,所以其值為8字節。

4 總結

sizeof求數組和指針是兩個不同的操作,對數組它是求數組的整體內存大小,而對指針,其值用于等于機器的字長(即不同的機器有不同的測試結果)。

這個易犯錯的知識點,你get到了嗎?

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7601

    瀏覽量

    136251
  • 編程
    +關注

    關注

    88

    文章

    3596

    瀏覽量

    93610
  • 指針
    +關注

    關注

    1

    文章

    480

    瀏覽量

    70513
  • 數組
    +關注

    關注

    1

    文章

    416

    瀏覽量

    25915
  • sizeof
    +關注

    關注

    0

    文章

    9

    瀏覽量

    6435
收藏 人收藏

    評論

    相關推薦

    C語言數組名指針

    指針C/C++語言的特色,而數組名指針太多的相
    發表于 08-27 17:48 ?714次閱讀

    C語言中指針數組數組指針的區別

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

    從編譯器角度分析C語言數組名指針的區別

    數組名卻不可以,正如你可以騎走一輛自行車,但是不能騎走一棵樹。另外,C語言數組下標改寫成指針偏移量的根本原因是
    發表于 06-23 23:36

    C語言入門教程-用指針操作數組

    C語言入門教程 在C語言中,數組指針的關系十分密切。要想有效地使用
    發表于 07-29 12:18 ?1484次閱讀

    C語言入門教學之數組資料總結免費下載

    本文檔的主要內容詳細介紹的是C語言入門教學之數組資料總結免費下載主要內容包括了:1 一維數組的定義和一維數組元素的引用2 一維
    發表于 10-23 17:53 ?5次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>入門教學之<b class='flag-5'>數組</b>資料總結免費下載

    指針數組都是C語言的精髓所在 兩者何聯系區別

    指針數組都是C語言的精髓所在,對于很多C程序員來說,如果你問這樣一個問題:數組
    的頭像 發表于 05-27 14:51 ?4077次閱讀
    <b class='flag-5'>指針</b>和<b class='flag-5'>數組</b>都是<b class='flag-5'>C</b><b class='flag-5'>語言</b>的精髓所在 兩者<b class='flag-5'>有</b>何聯系區別

    C語言中指針數組

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

    C語言指針數組的區別

    C語言教程中我們使用通過數組名通過偏移和指針偏移都可以遍歷數組,那么指針
    的頭像 發表于 07-18 16:29 ?1904次閱讀

    C語言進階】“數組指針”和“指針數組”都是啥跟啥?

    C語言進階】“數組指針”和“指針數組”都是啥跟啥?
    的頭像 發表于 08-31 13:21 ?1890次閱讀

    C語言進階C語言指針的高階用法

    C語言進階C語言指針的高階用法
    的頭像 發表于 08-31 13:24 ?2285次閱讀

    C語言中的char數組和char指針什么區別?

    讓我們通過下面的例子,來了解 C語言中字符數組和字符指針之間的區別。
    的頭像 發表于 01-29 16:35 ?2652次閱讀

    C語言數組元素的指針

    C語言調用函數時虛實結合的方法都是采用“值傳遞”方式,當用變量名作為函數參數時傳遞的是變量的值,當用數組名作為函數參數時。 由于數組名代表的是
    的頭像 發表于 03-10 14:45 ?843次閱讀

    C語言中什么是指針數組

    C語言中一個數組,若其元素均為指針類型數據,稱為指針數組,也就是說,
    的頭像 發表于 03-10 15:26 ?1678次閱讀

    C++數組名數組拷貝詳解

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

    數組指針不能混用的情況

    指針的基本概念。數組是一組相同類型的元素的集合,而指針是一個變量,它存儲了一個地址,該地址指向內存中的某個位置。在 C/C++ 中,
    的頭像 發表于 12-07 13:46 ?575次閱讀