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

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

指向指針?biāo)p的數(shù)組,并將多維數(shù)組傳遞給函數(shù)

指向指針?biāo)p的數(shù)組,并將多維數(shù)組傳遞給函數(shù)

C
qq_花開(kāi)花謝_0 2019-10-19 14:03:47
我知道數(shù)組會(huì)衰減為指針,因此如果聲明了char things[8];然后在things其他地方使用,things是指向數(shù)組中第一個(gè)元素的指針。另外,據(jù)我了解,如果有人宣布char moreThings[8][8];則moreThings其類型不是指向char的指針,而是類型為“指向char的指針的數(shù)組”,因?yàn)樗p僅發(fā)生一次。什么時(shí)候moreThings傳遞給函數(shù)(例如使用原型void doThings(char thingsGoHere[8][8]),堆棧實(shí)際發(fā)生了什么?如果moreThings不是指針類型,那么這真的仍然是引用傳遞嗎?我想我一直認(rèn)為它moreThings仍然代表多維數(shù)組的基址。如果doThings接受輸入thingsGoHere并將其自身傳遞給另一個(gè)函數(shù)怎么辦?除非有人指定一個(gè)數(shù)組輸入,否則該規(guī)則const將始終是可修改的,這是否就是規(guī)則?我知道類型檢查工作僅在編譯時(shí)發(fā)生,但是我仍然對(duì)從技術(shù)上算作按引用傳遞(即僅在傳遞類型為指針的參數(shù)時(shí)才將其視為傳遞,還是將指針數(shù)組傳遞為傳遞對(duì)象而感到困惑)感到困惑也可以參考嗎?)很抱歉,這個(gè)問(wèn)題到處都是,但是由于我很難理解這個(gè)問(wèn)題,所以很難表達(dá)出確切的詢問(wèn)。
查看完整描述

3 回答

?
ITMISS

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

您略有錯(cuò)誤:它moreThings還會(huì)衰減到第一個(gè)元素的指針,但是由于它是一個(gè)字符數(shù)組的數(shù)組,因此第一個(gè)元素是“ 8個(gè)字符數(shù)組”。因此,衰減的指針是這種類型的:


char (*p)[8] = moreThings;

的值的指針的當(dāng)然是相同的值&moreThings[0][0],即,第一元件的第一元件,并且也相同的&a,但類型是不同的一個(gè)在每種情況下。


這是一個(gè)例子,如果char a[N][3]:


+===========================+===========================+====

|+--------+--------+-------+|+--------+--------+-------+|

|| a[0,0] | a[0,1] | a[0,2]||| a[1,0] | a[1,1] | a[1,2]|| ...

|+--------+--------+-------+++--------+--------+-------++ ...

|            a[0]           |            a[1]           |

+===========================+===========================+====

                                    a

^^^

||+-- &a[0,0]

|+-----&a[0]

+-------&a

&a:整個(gè)字符數(shù)組的地址,它是一個(gè) char[N][3]


&a[0],與a:第一個(gè)元素的地址相同,它本身就是一個(gè)char[3]


&a[0][0]:第一個(gè)元素的第一個(gè)元素的地址,即 char


這表明不同的對(duì)象可能具有相同的地址,但是如果兩個(gè)對(duì)象具有相同的地址和相同的類型,則它們是相同的對(duì)象。


查看完整回答
反對(duì) 回復(fù) 2019-10-19
?
一只萌萌小番薯

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

Kerrek很好地解釋了


除此之外,我們可以通過(guò)以下示例證明這一點(diǎn):


#include <stdio.h>


int main ()

{

 int a[10][10];


 printf (".. %p  %p\n", &a, &a+1);

 printf (".. %p  %p \n ", &a[0], &a[0]+1);

printf (".. %p   %p \n ", &a[0][0], &a[0][0] +1);

}

輸出為:


.. 0x7fff6ae2ca5c  0x7fff6ae2cbec    = 400 bytes difference

.. 0x7fff6ae2ca5c  0x7fff6ae2ca84    = 40 bytes difference

 .. 0x7fff6ae2ca5c   0x7fff6ae2ca60  = 4 bytes difference. 

&a +1->通過(guò)增加整個(gè)數(shù)組大小來(lái)移動(dòng)指針。即:400個(gè)字節(jié)


&a [0] + 1->通過(guò)增加列的大小來(lái)移動(dòng)指針。即:40個(gè)字節(jié)。


&a [0] [0] +1->通過(guò)添加元素的大小(即4個(gè)字節(jié))來(lái)移動(dòng)指針。


[int大小為4個(gè)字節(jié)]


希望這可以幫助。:)


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

添加回答

舉報(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)