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

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

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

3天內不再提示

C語言數組和指針的區別

冬至子 ? 來源:嵌入式老林 ? 作者:嵌入式老林 ? 2023-05-30 10:55 ? 次閱讀

一、數組和指針的介紹

指針是一個變量,它存儲了一個內存地址,該地址指向一個變量的存儲位置。通過指針,可以訪問和修改指向的變量。數組是一個由相同數據類型元素組成的集合,可以通過索引來訪問和修改這些元素。

二、兩者之間的區別

1,存儲方式

數組:數組在內存中是連續存放的,開辟一塊連續的內存空間。數組是根據數組的下進行訪問的,數組的存儲空間,不是在靜態區就是在棧上。

指針:指針很靈活,它可以指向任意類型的數據。

指針p存儲的是一個內存地址,這個地址指向的是某種類型變量的存儲空間。如果要訪問這個變量,需要使用指針運算符(*)來解引用指針,將指針所指向的地址轉換為所指向的變量的值。指針的值也可以改變,通過指針運算符(&)獲取變量的地址,然后將其賦給指針變量。

int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};  // 
int a = 10;
int* p = &arr[0];  // 數組下標訪問第一個元素,取地址后是第一個元素的地址
//int* p = arr;  // 跟上面這行是等價的,數組名表示這個數組第一個數據的指針,此時數組和指針是“通用的”
p = &a;  // 指向a變量的地址,此時 *p取到的值就是a變量的值

2,賦值方式

同類型指針變量可以相互賦值,數組不行,只能一個一個元素的賦值或拷貝

3,占用空間大小

數組的大小取決于數組元素的類型和元素個數

數組所占存儲空間的內存:sizeof(數組名)

數組的大小:sizeof(數組名)/sizeof(數據類型)

int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};  // 占40個字節
int* p = arr;  // 占4個字節(32位系統)
char c = 'A';
char* p2 = &c;  // 占4個字節(32位系統)

指針無論是什么類型,在32位平臺是占4 byte,在64位平臺是占8 byte

4, 可變性

數組的大小在定義時就已經確定,無法改變,而指針可以隨時指向不同的變量,從而實現動態變化。

三、數組指針和指針數組的區別

指針數組 :首先是一個數組,只不過數組的每個成員是一個指針變量。

數組指針 :首先是一個指針,這個指針指向一個數組。

代碼:

int *p1[10];  // 指針數組,[]的優先級大于*,p1是一個數組,數組的值是一個指針
int (*p2)[10];  // 數組指針

圖片

對于指針數組,p1先和“[]”結合,構成一個數組的定義,數組名為p1,int *修飾的是數組的內容,即數組的每個元素。那么它本質是一個數組,這個數組里有10個指向int類型數據的指針。

對于數組指針,“()”的優先級比“[]”高,“*”和p2 構成一個指針的定義,指針變量名為p2,int 修飾的是數組的內容,即數組的每個元素。數組在這里并沒有名字,是個匿名數組。那么它本質是一個指針,它指向一個包含10個int 類型數據的數組。

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

    關注

    38

    文章

    7452

    瀏覽量

    163604
  • C語言
    +關注

    關注

    180

    文章

    7598

    瀏覽量

    136186
收藏 人收藏

    評論

    相關推薦

    C語言數組名和指針

    指針C/C++語言的特色,而數組名與指針有太多的相似,甚至很多時候,
    發表于 08-27 17:48 ?712次閱讀

    C語言數組指針區別

    大家好,我是嵌入式老林,從事嵌入式軟件開發多年,今天分享的內容是C語言數組指針區別,希望能對你有所幫助。
    發表于 07-11 12:40 ?365次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>數組</b>和<b class='flag-5'>指針</b>的<b class='flag-5'>區別</b>

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

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

    C語言——指針數組和函數

    C語言——指針數組和函數基本解釋   1、指針的本質是一個與地址相關的復合類型,它的值是數據存放的位置(地址);
    發表于 04-20 15:25

    C51語言指針、結構、聯合和枚舉

     指針C51語言的精華也是難點。本章主要介紹指針的概念、定義指針的方法,介紹指向一維數組
    發表于 06-12 23:47 ?112次下載

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

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

    c語言函數指針定義,指針函數和函數指針區別

     往往,我們一提到指針函數和函數指針的時候,就有很多人弄不懂。下面就由小編詳細為大家介紹C語言中函數指針
    發表于 11-16 15:18 ?3613次閱讀

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

    指針數組都是C語言的精髓所在,對于很多C程序員來說,如果你問這樣一個問題:數組
    的頭像 發表于 05-27 14:51 ?4067次閱讀
    <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>

    詳談數組指針區別與聯系

    詳談數組指針區別與聯系
    的頭像 發表于 06-29 15:18 ?2.2w次閱讀
    詳談<b class='flag-5'>數組</b>和<b class='flag-5'>指針</b>的<b class='flag-5'>區別</b>與聯系

    指針數組數組指針區別

    這里我們區分兩個重要的概念:指針數組數組指針
    的頭像 發表于 06-29 15:30 ?2w次閱讀
    <b class='flag-5'>指針</b><b class='flag-5'>數組</b>和<b class='flag-5'>數組</b><b class='flag-5'>指針</b>的<b class='flag-5'>區別</b>

    C語言指針數組區別

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

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

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

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

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

    C語言數組元素的指針

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

    C語言中什么是指針數組

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