當前位置:首頁 » 編程語言 » c語言指針集

c語言指針集

發布時間: 2025-05-24 12:18:03

『壹』 C語言中:數組指針與指針數組有什麼區別

數組指針是指向這個數組首地址的指針,指向對象是這個數組;
指針數組是存放一類指針的數組,這個數組的每個元素都是一個指針;
例子:
int a[10];
int* s;
s = a;//這里s就是一個數組指針,它的值就是數組a 的首地址;當然,如果a是一個整數,那s就是一個指向整型的指針;

int a;
int* s[5];
for(int i=0;i<5;i++)s[i]=a;
//這里s就是一個指針數組,它的每個元素都是整型變數a的地址
應該算比較明白了吧
謝樓上提醒

『貳』 C語言數組指針

int (*pstu)[4];為指向有4個元素的數組的指針

int* getPosPerson(int pos, int (*pstu)[4]);為返回值為指針的函數

注意這是指針函數,而不是函數指針,後者為指向函數的指針變數,兩者含義是不同的

(類似指針數組和數組指針,兩者含義也是不同的,一個本質是數組,一個本質是指針)

調用該函數的語句為:ppos =getPosPerson(pos,scores);

傳入的scores表示3行4列的二維數組首行數組的地址,即&scores[0]

調用後相當於int (*pstu)[4]=scores,所以在getPosPerson中pstu與scores是等價的

即pstu可看作&scores[0],那麼pstu+pos也就等價於scores+pos,等價於&scores[pos]

即返回了指向&scores[pos](也就是scores第pos+1行的地址)的指針

返回該行指針ppos後,就可以查看該行表示的學生的4科成績了

『叄』 C語言選擇題,關於指針數組。求詳解

int a[2][3]; 定義了一個二維函數,每一維數組有三個元素。
int (*pt)[3]; 定義了一個數組指針,也就是定義了一個指向有三個元素的指針,即該指針,每次自加1,地址跳過三個int
pt=a; 就是讓pt指向a[0],注意a[0]是一個數組地址,裡面有三個元素
對於A選項,pt[0][0]是正確的,pt[0][0]等價於a[0][0]
對於B選項,不正確,因為pt+1就是a[1], *(pt+1)[2]相當於a[3][0]不對。
因為運算符優先順序,[]大於*,因此*(pt+1)[2]就是*pt[1+2] 也就是*a[1+2]。而*a[3]就等價於a[3][0]。越界了
改成(*(pt+1))[2]就對了,相當於a[1][2]
對於C選項,正確,*(pt[1]+2) 相當於a[1][2]
對於D選項,正確,*(a[0]+2)相當於a[0][2]

熱點內容
java伺服器代碼 發布:2025-05-24 18:10:41 瀏覽:778
qt源碼書嗎 發布:2025-05-24 17:43:45 瀏覽:338
sql遍歷表 發布:2025-05-24 17:38:51 瀏覽:450
x86x64體系探索及編程 發布:2025-05-24 17:15:06 瀏覽:130
區域網vpn伺服器搭建 發布:2025-05-24 17:10:33 瀏覽:192
c語言演算法復雜度 發布:2025-05-24 17:00:38 瀏覽:50
游戲腳本是什麼 發布:2025-05-24 16:33:05 瀏覽:733
wifi代理伺服器地址 發布:2025-05-24 16:25:20 瀏覽:866
安卓瀏覽器下載的文件在哪裡找到 發布:2025-05-24 15:52:18 瀏覽:148
伺服器所在主機的ip地址 發布:2025-05-24 15:45:52 瀏覽:983