第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

c中的數(shù)組名到底是什么?

c中的數(shù)組名到底是什么?

C
幕布斯6054654 2019-08-03 14:03:39
c中的數(shù)組名到底是什么?在C中,我很難理解數(shù)組名稱的類(lèi)型和用法,這似乎是一篇很長(zhǎng)的文章,但請(qǐng)耐心等待。據(jù)我所知,以下聲明a類(lèi)型int []I.整數(shù)數(shù)組.int a[30];當(dāng)a還指出數(shù)組的第一個(gè)元素,以及類(lèi)似*(a+2)都是有效的。因此,a看上去像指向整數(shù)的指針..但實(shí)際上int []和int*是不同的,而前者是數(shù)組類(lèi)型后來(lái)是指向整數(shù)的指針.也是一個(gè)類(lèi)型的變量int []獲取轉(zhuǎn)換為類(lèi)型的變量。int*傳遞給函數(shù)時(shí);如C數(shù)組通過(guò)引用傳遞(除sizeof(操作員)這是一個(gè)讓我垂頭喪氣的問(wèn)題。請(qǐng)看下面的代碼:int main(){     int (*p)[3];     int a[3] = { 5, 4, 6 };     p = &a;     printf("a:%d\t&a:%d\n",a,&a);     printf("%d",*(*p + 2));}產(chǎn)出:a:2686720       &a:26867206那么,上面的代碼是如何工作的呢?我有兩個(gè)問(wèn)題:a和&a有同樣的價(jià)值。為什么?究竟是什么int (*p)[3];做?它宣布指向數(shù)組的指針我知道這個(gè)。但是如何是一個(gè)指向數(shù)組的指針不同于指向數(shù)組的第一個(gè)元素的指針。和數(shù)組的名稱?有人能把事情弄清楚嗎?我有很多困惑。我知道我應(yīng)該用%p作為占位符,而不是使用%d用于打印指針變量的值。由于使用整數(shù)占位符,可能會(huì)打印截?cái)嗟刂?。但我只想保持?jiǎn)單。
查看完整描述

3 回答

?
慕尼黑的夜晚無(wú)繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

  1. A和&a的價(jià)值是一樣的,怎么回事?

它們的價(jià)值相同,但類(lèi)型不同。數(shù)組對(duì)象在元素之間沒(méi)有填充(前后),因此數(shù)組的地址和數(shù)組的第一個(gè)元素的地址是相同的。

即:

(void *) a == (void *) &a
  1. 它到底做了什么int(*p)[3];定義指向數(shù)組的指針,我知道,但是,指向數(shù)組的指針與指向數(shù)組的第一個(gè)元素的指針和數(shù)組的名稱有什么不同呢?

這是兩種不同的指針類(lèi)型。例如,指針?biāo)惴ǎ?/trans>

a + 1   /* address of the second element of the array */&a + 1  /* address one past the last element of the array */

編輯:由于普遍的需求,我在下面添加了一些關(guān)于數(shù)組轉(zhuǎn)換的信息。

除三個(gè)例外情況外,在表達(dá)式中,類(lèi)型為T被轉(zhuǎn)換為類(lèi)型指針的值。T指向數(shù)組的第一個(gè)元素。如果對(duì)象是sizeof&如果對(duì)象是字符串,則初始化數(shù)組。

例如,這一聲明:

printf("a:%d\t&a:%d\n", a, &a);

實(shí)際上相當(dāng)于:

printf("a:%d\t&a:%d\n", &a[0], &a);

還請(qǐng)注意d轉(zhuǎn)換說(shuō)明符只能用于打印有符號(hào)整數(shù);要打印指針值,必須使用p說(shuō)明符(參數(shù)必須是void *)。因此,要正確地做事情,請(qǐng)使用:

printf("a:%p\t&a:%p\n", (void *) a, (void *) &a);

分別:

printf("a:%p\t&a:%p\n", (void *) &a[0], (void *) &a);




查看完整回答
反對(duì) 回復(fù) 2019-08-04
?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊

其他答案已經(jīng)解釋了這個(gè)問(wèn)題。我正試著用一些圖表來(lái)解釋它。希望這會(huì)有幫助。


當(dāng)您聲明一個(gè)數(shù)組時(shí)

int a[3] = {5, 4, 6}

內(nèi)存安排看上去就像

https://img1.sycdn.imooc.com//5d27e9da00019ee805260097.jpg

現(xiàn)在回答你的問(wèn)題:

  1. a

    &a

    有同樣的價(jià)值。怎么回事?

你已經(jīng)知道a的數(shù)組類(lèi)型和數(shù)組名稱。a成為指向數(shù)組的第一個(gè)元素的指針。a(衰變后),即指向地址0x100..請(qǐng)注意0x100也是內(nèi)存塊的起始地址(數(shù)組)。a)。你應(yīng)該知道,一般來(lái)說(shuō),第一個(gè)字節(jié)的地址稱為變量的地址。..也就是說(shuō),如果一個(gè)變量是100個(gè)字節(jié),那么它的地址等于它的第一個(gè)字節(jié)的地址。

&a是整個(gè)內(nèi)存塊的地址,即它是數(shù)組的地址。a..見(jiàn)圖表:

https://img1.sycdn.imooc.com//5d27e9dd000115f105300240.jpg

現(xiàn)在你可以理解為什么a&a雖然兩者的類(lèi)型不同,但兩者的地址值是相同的。

它到底是做什么的int (*p)[3];聲明一個(gè)指向數(shù)組的指針,我知道這一點(diǎn)。但是,指向數(shù)組的指針與指向數(shù)組的第一個(gè)元素的指針和數(shù)組的名稱有什么不同呢?

參見(jiàn)上面的圖,我們清楚地解釋了指向數(shù)組的指針與指向數(shù)組元素的指針是如何不同的。
當(dāng)你分配&ap,然后p指向具有起始地址的整個(gè)數(shù)組。0x100.


注:關(guān)于這條線

..如C數(shù)組由引用傳遞(除sizeof職能)。

在C中,參數(shù)是通過(guò)值傳遞的。在C中不通過(guò)引用傳遞,當(dāng)一個(gè)普通變量被傳遞給一個(gè)函數(shù)時(shí),它的值是復(fù)制對(duì)相應(yīng)參數(shù)的任何更改都不會(huì)影響變量。
數(shù)組也是通過(guò)值傳遞的,但不同的是,數(shù)組名稱會(huì)衰減到指向第一個(gè)元素的指針,而分配給函數(shù)的參數(shù)(此處,指針值被復(fù)制)的指針;數(shù)組本身不會(huì)被復(fù)制。
與普通變量不同,用作參數(shù)的數(shù)組不受任何更改的保護(hù),因?yàn)閿?shù)組本身沒(méi)有復(fù)制。,而是將指針復(fù)制到第一個(gè)元素。

你也應(yīng)該注意到sizeof不是函數(shù),在這種情況下,數(shù)組名稱不充當(dāng)參數(shù)。sizeof操作者數(shù)組名作為操作數(shù)..當(dāng)數(shù)組名稱是一元的操作數(shù)時(shí),也是正確的。&接線員。




查看完整回答
反對(duì) 回復(fù) 2019-08-04
?
鴻蒙傳說(shuō)

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

  1. a對(duì)應(yīng)于指向數(shù)組第0元素的指針。然而,&.的情況也是如此,它只是給出了數(shù)組的起始地址。

作為,a   --> pointer pointing to starting element of array a[],it does not know about other element's location..

&a  --->address location for storing array a[] which stores first element location,but knows every element's location.

類(lèi)似地,其他元素的位置將是(a+2),(a+4),直到數(shù)組的末尾。

因此,你得到了這樣的結(jié)果。

  1. int(*p)[3]是指向數(shù)組的指針。如果是int*p[3],其含義將完全不同。這將意味著一系列的指針,這將是完全不同的上下文。

指向數(shù)組的指針將自動(dòng)處理數(shù)組中的所有其他元素。

然而,指向數(shù)組的第一個(gè)元素的指針,即a只知道數(shù)組的第一個(gè)元素,您必須手動(dòng)給指針?biāo)阈g(shù)方向來(lái)訪問(wèn)下一個(gè)元素。參見(jiàn),在本例中-我們可以通過(guò)將2添加到a,即將第三個(gè)元素添加到a,即a+4,以此類(lèi)推,從a獲得第二個(gè)元素。/注意兩者的區(qū)別,因?yàn)樗且粋€(gè)整數(shù)數(shù)組!



查看完整回答
反對(duì) 回復(fù) 2019-08-04
  • 3 回答
  • 0 關(guān)注
  • 351 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)