指標中的 與 幾種指標的寫法有什麼區別?請解釋下,謝謝啦!

時間 2023-09-16 20:34:07

1樓:匿名使用者

1.*是定義乙個變數是指標型,例如,int * p,p是整型指標,指向一塊記憶體,而定義int a,&a表示取這個整型變數的儲存位址,具體什麼時候用這兩個符號,要看函式的引數型別和返回型別,如果是指標型則用p和&a,如果不是就用*p和a

應該是個二維陣列。

c語言允許把乙個二維陣列分解為多個一維陣列來處理。因此陣列a可分解為三個一維陣列,即a[0],a[1],a[2]。每乙個一維陣列又含有四個元素。

例如a[0]陣列,含有a[0][0],a[0][1],a[0][2],a[0][3]四個元素。 陣列及陣列元素的位址表示如下:a是二維陣列名,也是二維陣列0行的首位址,等於是第乙個一維陣列的陣列名和首位址,因此也為1000。

a+0)或*a是與a[0]等效的, 它表示一維陣列a[0]0 號元素的首位址。 也為1000。&a[0][0]是二維陣列a的0行0列元素首位址,同樣是1000。

因此,a,a[0],*a+0),*a,&a[0][0]是相等的。同理,a+1是二維陣列1行的首位址,等於是第二個一維陣列的陣列名和首位址,因此也為1008。 &a[1][0]是二維陣列a的1行0列元素位址,也是1008。

因此a+1,a[1],*a+1),&a[1][0]是等同的。 由此可得出:a+i,a[i],*a+i),&a[i][0]是等同的。

c語言規定,它是一種位址計算方法,表示陣列a第i行首位址。由此,我們得出:a[i],&a[i],*a+i)和a+i也都是等同的。另外,a[0]也。

可以看成是a[0]+0是一維陣列a[0]的0號元素的首位址, 而a[0]+1則是a[0]的1號元素首位址,由此可得出a[i]+j則是一維陣列a[i]的j號元素首位址,它等於&a[i][j]。由a[i]=*a+i)得a[i]+j=*(a+i)+j,由於*(a+i)+j是二維陣列a的i行j列元素的首位址。該元素的值等於*(*a+i)+j)。

3.*是取值,p是位址 ,*p表示p指向記憶體塊中儲存的值,看了上面的解釋也會有所了解。

2樓:網友

是取值。是取址。

看好這個例子。

int *p;

此時 *p中的*指的是指標定義。

宣告 *p為乙個int型指標 為其分配記憶體。

p=2;這裡的*p中的* 便是指 剛剛分配記憶體那個指標變數中。

數值區所儲存的值為2

int a;

a=*p;此處 *p基是取值。

a 的值為2

這個例子是譚浩強老師在書中作的例子。

int a[2][10];

int *p;

int **k;

p=a[1][9];(合法)

k=a[1];(合法)

這裡 k中的數值區儲存的是a陣列的一維位址 而不是陣列中的數。

k是取出其中儲存的數值 也就是存在儲存區的位址此時 位址是作為乙個數值去儲存的。

而**k 取出*k所儲存的位址中 所儲存的數值此時才是a[陣列中真正的元素。

這個例子是最抽象的。

但是 這個例子是最有代表性的。

ps:當然在c++中對*的定義作了擴充套件。

舉個例子。int a[10];

int *p;

此時 a中儲存的是陣列a的首位址。

p=*a也是合法的。

lz你第二個問題中。

沒有給出y的定義語句。

很難就那個問題幫助你。

另外兩個問題 上邊那段話足夠了。

3樓:什麼名字

這個其實可以看概念,概念寫的很清楚。*位址運算子,&為取位址運算子。

有乙個很經典的**:

int main()

int a = 5;

int *p = a;

cout <

請問在c++中使用指標的好處有哪些?

4樓:斯正清帛禹

指標使用比較靈活,如果說它的好處,根據我平時程式設計時的感受,大概有這麼幾點:

1.在資料傳遞時,如果資料塊較大(比如說資料緩衝區或比較大的結構),這時就可以使用指標傳遞位址而不是實際資料,即提高傳輸速度,又節省大量記憶體。

2.資料轉換,利用指標的靈活的型別轉換,可以用來做資料型別轉換,比較常用於通訊緩衝區的填充,比如說,乙個資料緩衝區char

buf[100],如果其中buf[0,1]為命令號,buf[2,3]為型別,buf[4~7]為某一數值,型別為int,就可以使用如下語句進行賦值:

short*)&buf[0]=cmdid;

short*)&buf[2]=type;

int*)&buf[4]=value;

3.字串指標,是使用最方便,且常用的。

4.函式指標,形如:#define

pmyfun

void*)(int,int),可以用在大量分支處理的例項當中,如某通訊根據不同的命令號執行不同型別的命令,則可以建立乙個函式指標陣列,進行散轉。

5.在資料結構中,鍊表、樹、圖等大量的應用都離不開指標。

幾種指標的寫法有什麼區別?請解釋下,謝謝啦!

5樓:網友

前三種是乙個意思,即a是int型指標變數(首先: a是乙個指標,其次a指向int型)

最後一種為: a是指向指標的指標(首先: a是乙個指標,其次,他指向的型別為int*,也是乙個指標)

int b;

int *a = b;

a指向b, 實際上是a這個儲存單元儲存的內容是b儲存單元的位址。

就上面的宣告,通常來說a意味著指標(跟位址相關),*a為指標所指向的值,是值。所以*a=*b為賦「值」操作,int b=10;*a=b也是賦「值」操作,而如果寫成a=b,則兩邊型別不匹配,編譯時就是提示錯誤,在這做法在pc機端不常用,但嵌入式開發中,經常會用到,此時應做強制型別轉換。

6樓:網友

首先是一樣的意思,4是定義指標的指標!

另外乙個問題其實很簡單,只是樓主學習的時候不夠細心我們定義的int *a;這個時候*a是乙個指標,只有定義的時候*a代表指標。

當第二次出現的時候a代表指標,*a代表指標裡面的內容如int *a;

int i=10;

a=&i;這個時候*a就是10,a就是指向10的指標的值。

在這裡給自己新建立的團隊「c菜鳥助手」打個小廣告,各位如果有c/c++方面不懂的可以一起討論!

不為分數,只為解決問題!

謝謝,祝各位生活愉快!

7樓:網友

一二三沒有區別,都是指向int型的指標a

4是二級指標,表示指標的指標。

a代表儲存變數的記憶體位址,*是解引用符號,表示位址中所儲存的變數值。

指標型別^符號怎麼讀

8樓:網友

y^ (在上) 英文念 y-hat;中文 y-帽

y- (在上) 念 y-bar;中文 y-槓。

y. (在上) 念 y-dot;中文 y-點。

y~ (在上) 念 y-tilde;中文 y-波浪。

y→ (在上) 念 y-arrow;中文 y-箭頭。

指標的指標如何理解?

9樓:網友

打個比方 抽屜是儲存單元,就是我們放資料的地方。抽屜的鑰匙就是指標,有鑰匙我們就能找到抽屜裡面的東西。 那麼指標的指標就是 乙個「裝著鑰匙的抽屜「 的 鑰匙。

c++指標理解題

10樓:匿名使用者

]優先順序比肢銷慎鬥薯*高,所以歷敬先與a+1結合,再根據與*的轉換得到**(a+1+1),根據p[i]=*p+i),即**(a+2),就是a[2][0]

下列指標中屬於時期指標是的屬於時點指標的是A 人

墨汁諾 答案 選b人口總數 時代指標反映的是總體現象在一定時期內的累計總量水平的指標,所以這四個選項中只有b人口總數才是反映總量水平的指標。時點指標是某一時刻的總量,反映總體已經存在並經常變化的數量狀態在某一個具體時刻的表現,其基本特徵是 第一,指標的數值不嚴格隨時間長短變化 第二,指標數值沒有可加...

指標和指標變數的區別是什麼,指標和指標變數有什麼區別呢?

指標,其實就是一個記憶體地址 指標變數,就是存放記憶體地址的變數,也就是存放指標的變數,這樣說,通俗了吧,他們之類不應該講區別,而是應該講關係,指標是一個地址,而指標變數時存放地址的變數。的意思是 指向 地址應該對應地址。變數的指標就是變數的地址。存放變數地址的變數是指標變數。允許用一個變數來存放指...

C語言指標問題,行指標的賦值與取值

1.p a 1可以。表示p指向陣列a的第1行。2.p a表示p指向陣列a的第0行。3.p a.則 p是陣列a的首地址,這個地址型別是int 4.可以定義成 p 4 但不能p a。因為它們型別不一致。5 p的值與型別與a 0 相等。 菜刀剁菜鳥 1.正確 2.p a是表示p指向陣列a的第0行 p指a ...