區別:對指針數組來說,首先它是一個數組,數組的元素都是指針,也就是說該數組存儲的是指針,數組占多少個字節由數組本身決定;而對數組指針來說,首先它是一個指針,它指向一個數組,也就是說它是指向數組的指針,在 32 位系統下永遠占 4 字節,至于它指向的數組占多少字節,這個不能夠確定,要看具體情況。
1.指針數組:定義 int *p[n];
指針數組可以說成是”指針的數組”,由于*p沒有括號,首先這個變量是一個數組,其次,”指針p”修飾這個數組,意思是說這個數組的所有元素都是指針類型,而指針所占的字節數和其類型無關,只與系統有關,在32位系統下,任何類型的指針占據4個字節,在64位系統下,任何類型的指針占據8個字節。
2.數組指針:定義 int (*p)[n];
由于()的優先級高,首先說明p是一個int類型指針,它是指向一個整型(int)的一維數組,這個一維數組的長度是n,也可以說是總共有n個格子。數組指針也稱指向一維數組的指針,亦稱行指針。
數組指針也可以稱為“數組的指針”,首先這個變量是一個指針,其次,”數組”修飾這個指針,意思是說這個指針存放著一個數組的首地址,或者說這個指針指向一個數組的首地址。
1.數組指針
首先定義一個數組指針,既然是數組的指針,說明是用指針p去指向一個一維數組,即:
int(*p)[[4]];//這里定義int類型,p是一個指針,指向一維數組的首地址,這個一維數組大小為4
也就是說,int類型的指針p指向int [[4]]的數組,而數組的每一個元素是一個int類型的變量。
數組指針本質是一個指針,而指針的作用就是用來指向變量的地址,所以數組指針一般可以這樣使用(示例):
voidfun(int(*P)[4]);//子函數中的形參,數組指針a[3][4]={0};//主函數中定義的二維數組fun(a);//主函數調用子函數的實參,是二維數組的首元素首地址
2.指針數組
對于指針數組,也就是“指針的數組”,說明這個數組的所有元素都是指針類型。不妨定義指針p,例如:
int*p[[4]];//這里數組長度為4,所有元素均為int類型的指針
代碼如下(示例):
voidFun(char**str);//子函數中的形參,指針數組intmain(){intarr[3][4];char*str="abc";char**q=&str;}
指針數組和數組指針參數傳遞問題
傳遞的參數 | 匹配需要的形參 |
---|---|
int *p[4] | int **p(指針數組或者二級指針) |
int (*p)[4] | int (*p)[4](不變) |
int [3][4] | int (*p)[4](數組指針) |
int **p | int **p(不變) |
例子:使用指針數組打印出:“sun wu kong”
//代碼塊打印“sunwukong”charstr1[]={'s','u','n','\0'};charstr2[]={'w','u','\0'};charstr3[]={'k','o','n','g','\0'};char*p[3]={str1,str2,str3};
以上就是關于“C語言指針數組和數組指針的區別有哪些”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注本站行業資訊頻道。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
什么是預算赤字?預算赤字是指在編制預算時,就存在收不抵支的情況,預算列有赤字,不代表預算執行的結果也一定有赤字。因為在預算執行過程中可以通過采取增收節支的措施,實現收支的平衡。預算赤字的特點:一是赤字的計劃性;二是預算收支差額中不包括含公債收入因素。2022年我國財政赤字率擬按2.8%左右安排,比去年有所下調,有利于增強財政可持續性。我國彌補財政赤字的方式有:1、動用歷年結余 動用歷年結余就是使用...
千萬不要激活京東白條是怎么回事?京東白條為用戶在京東商城提供“先消費后付款”服務的同時,還為用戶提供了分期還款、免息期等服務,對于用戶而言是非常劃算的。但是因為京東白條開通后,不少用戶因為無法克制自身的消費欲望,消費時經常超出自己的實際經濟承受能力,所以沒有一定的克制力的話,最好不要開通京東白條等類型的消費信用貸款工具。因為一旦到期還款日前無法按時還款,就導致了逾期行為,而...
銀證轉賬時間要多久?銀證轉賬實時到賬,并且沒有金額限制和不收手續費,只要在規定時間內轉賬即可。銀證轉賬時間為:周一至周五上午9: 00到下午16:00點,部分券商上午8: 30就能進行銀證轉賬,法定節假日除外。要注意的是當天賣出股票,資金可用不可取,資金當天可以繼續交易股票、基金等,轉出需要到第二個交易日。銀證轉賬轉到銀行卡多長時間?最快當天就到。其實銀證轉賬牽涉到證券資金賬戶和銀行賬戶的結算問題...