• 正文
  • 推薦器件
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

關于指針數(shù)組和數(shù)組指針的理解與測試

2024/05/20
905
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

先簡單說一下兩個的概念,

指針數(shù)組:是一個數(shù)組,數(shù)組中的每個元素都是指針,例如 char *p[3];

數(shù)組指針:是一個指針,指向數(shù)組,例如 int (*q)[3];

測試代碼:

#include <stdio.h>
int main(){  int i=0;      char a=12,b=34,c=56;??char?*p[3]={&a,&b,&c};?//指針數(shù)組    char y[]={1,2,3,4,5};  char (*q)[5]=&y;       //數(shù)組指針    int z[]={6,7,8,9,10};  int (*r)[5]=&z;        //數(shù)組指針    for(i=0;i<3;i++)    printf("p[%d]=%d, ",i,*p[i]);  printf("p=%p,p+1=%prn",p,p+1);  printf("sizeof(p)=%ldrn",sizeof(p));  printf("rnrn");    for(i=0;i<5;i++)    printf("y[%d]=%d, ",i,*(*q+i));  printf("q=%p,q+1=%prn",q,q+1);  printf("sizeof(q)=%ldrn",sizeof(q));  printf("rnrn");    for(i=0;i<5;i++)    printf("z[%d]=%d, ",i,*(*r+i));  printf("r=%p,r+1=%prn",r,r+1);  printf("sizeof(r)=%ldrn",sizeof(r));  printf("rnrn");    return 0;}

在64位windows下運行結果如下:

p[0]=12, p[1]=34, p[2]=56, p=0x7ffc08409000,p+1=0x7ffc08409008sizeof(p)=24
y[0]=1, y[1]=2, y[2]=3, y[3]=4, y[4]=5, q=0x7ffc08409023,q+1=0x7ffc08409028sizeof(q)=8
z[0]=6, z[1]=7, z[2]=8, z[3]=9, z[4]=10, r=0x7ffc08408fe0,r+1=0x7ffc08408ff4sizeof(r)=8

通過獲取各個指針的大小可以發(fā)現(xiàn),windows指針大小占用8個字節(jié),p是指針數(shù)組,且有三個元素,所以占用大小是3*8=24個字節(jié);q和r分別是char和int類型的數(shù)組的指針,所以都只占用8個字節(jié)。

所以,指針數(shù)組是某一類指針的合集,是一個數(shù)組;

數(shù)組指針僅僅是一個指針,指向數(shù)組。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
SN74LVC1G08DCKR 1 Texas Instruments Single 2-input, 1.65-V to 5.5-V AND gate 5-SC70 -40 to 125

ECAD模型

下載ECAD模型
$0.26 查看
TLP185(SE(T 1 Toshiba America Electronic Components NPN-OUTPUT DC-INPUT OPTOCOUPLER,1-CHANNEL,3.75KV ISOLATION,SO

ECAD模型

下載ECAD模型
$0.21 查看
SN74HC14DG4 1 Texas Instruments 6-ch, 2-V to 6-V inverters with Schmitt-Trigger inputs 14-SOIC -40 to 85

ECAD模型

下載ECAD模型
$0.38 查看

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

公眾號:物聯(lián)網(wǎng)思考;主要記錄、分享、思考開發(fā)中遇到的技術小細節(jié),涉及嵌入式單片機、C語言、傳感器、低功耗物聯(lián)網(wǎng)等。偶爾也可能是程序員健康、職場潛規(guī)則、生活思考、行業(yè)討論。