日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

指针数组/数组指针

發布時間:2024/1/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 指针数组/数组指针 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C/C++中有兩個非常容易混淆的十分常用的但是又特別不引起人注意的兩個概念,指針數組和數組指針,或許你已經對這兩個概念早有耳聞,但是不知你有沒有對他們做過細致的分析來區別二者呢?

? ? 下面我們來看下百度百科上是如何對二者進行定義的

? ? 數組指針

  一:數組指針:數組名本身就是一個指針,指向數組的首地址。注意這是聲明定長數組時,其數組名指向的數組首地址是常量。而聲明數組并使某個指針指向其值指向某個數組的地址(不一定是首地址),指針取值可以改變。
  二:數組指針:是指向數組的一個指針,如int (*p)[10] 表示一個指向10個int元素的數組的一個針。 ??
? ?
? ? 指針數組

? ? 一個數組,若其元素均為指針類型數據,稱為指針數組。 也就是說,指針數組中每一個元素都相當于一個指針變量。其詳細形式應該如下: *a[0], ...*a[n]. 每一個數組里面存儲的是其指向的地址;一維指針數組的定義形式為:類型名 *數組名[數組長度]
例如:int *p[4],由于[]比*優先級更高,因此p先與[4]結合,形成p[4]的形式,這顯然是數組形式。然后再與p前面的*結合,*表示此數組是指針類型的,每個數組元素都指向一個整型變量。
?
? ? demo:
? ? 從上面的對比分析中我們可以清楚的知道二者的區別,關鍵就在于*和[]優先級上的問題,下面通過一個例子來分析一下。
?
聲明 char *ponitArray[] = {"stately" , "plump" , "buck" , "mulligan"}; 由定義知這是一個指針數組,那么sizeof(pointArray)=?呢,因為pointArray是一個存放指針的數組,而存放指針其實存放的是地址,一般用4個字節表示,而數組大小為4,故而結果就為4*4 = 16.
?
char (*arrayPoint)[4]; char t[4]="123"; arrayPoint=&t; cout<<"*A = "<<*arrayPoint<<"\tA = "<<arrayPoint<<endl;
上面幾行代碼輸出結果應該是什么呢?,首先arrayPoint是一個指針,指向一個存放4個字符的C風格字符串,從這里我們可以知道arrayPoint其實是一個32位(一般)的整數,所有下一步我們要將一個長度為4的字符串地址賦給該指針,即arrayPoint=&t;,故可知輸出結果就為“123”和字符串t的地址。

總結

以上是生活随笔為你收集整理的指针数组/数组指针的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。