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

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

函數(shù)指針和函數(shù)的地址

函數(shù)指針和函數(shù)的地址

C
慕尼黑的夜晚無(wú)繁華 2019-08-26 19:24:35
函數(shù)指針和函數(shù)的地址所以我想在制作函數(shù)指針時(shí),你不需要operator &獲取初始函數(shù)的地址:#include <stdio.h>double foo (double x){     return x*x;}int main () {     double (*fun1)(double) = &foo;     double (*fun2)(double) =  foo;     printf("%f\n",fun1(10));     printf("%f\n",fun2(10));     printf("fun1 = %p \t &foo = %p\n",fun1, &foo);     printf("fun2 = %p \t  foo = %p\n",fun2,  foo);            int a[10];     printf("  a = %p \n &a = %p  \n",a,&a);     return 0;}輸出:>./a.out  100.000000100.000000fun1 = 0x4004f4      &foo = 0x4004f4fun2 = 0x4004f4       foo = 0x4004f4   a = 0x7fff26804470   &a = 0x7fff26804470然后我意識(shí)到這對(duì)于數(shù)組也是如此,這意味著如果你有int a[10]兩個(gè)a并&a指向相同的位置。為什么這是數(shù)組和函數(shù)?地址是否保存在與其中保存的值(地址)具有相同地址的內(nèi)存位置中?
查看完整描述

3 回答

?
暮色呼如

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

鑒于int a[10],雙方a&a產(chǎn)生相同的地址,是的,但它們的類(lèi)型是不同的。

a是類(lèi)型的int[10]。當(dāng)它被隱式轉(zhuǎn)換為指針類(lèi)型時(shí),指針是類(lèi)型int*并指向數(shù)組的初始元素。&a是類(lèi)型int (*)[10](即指向十個(gè)整數(shù)數(shù)組的指針)。因?yàn)閿?shù)組中沒(méi)有填充,它們都會(huì)產(chǎn)生具有相同的指針,但指針具有不同的類(lèi)型。

函數(shù)類(lèi)似于數(shù)組,但不完全相同。你的功能foo是類(lèi)型的double(double)。無(wú)論何時(shí)foo在表達(dá)式中使用并且不是一元運(yùn)算&符的操作數(shù),它都會(huì)隱式轉(zhuǎn)換為指向其自身的指針,該指針屬于類(lèi)型double(*)(double)。

因此,出于所有實(shí)際目的,函數(shù)的名稱(chēng)和指向同一函數(shù)的指針是可互換的。有一些細(xì)微之處,我在回答“為什么所有這些瘋狂的函數(shù)指針定義都能正常工作?真正發(fā)生了什么?”時(shí)回答了所有這些細(xì)微之處。(這個(gè)問(wèn)題是關(guān)于C ++的問(wèn)題,但C ++中非成員函數(shù)的規(guī)則與C中的函數(shù)相同。)


查看完整回答
反對(duì) 回復(fù) 2019-08-26
?
開(kāi)滿天機(jī)

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

不,沒(méi)有專(zhuān)門(mén)用于指向函數(shù)/數(shù)組的額外存儲(chǔ)空間。

大多數(shù)變量variable_name除了獲取該變量的地址之外還有其他含義,因此您需要使用它&variable來(lái)獲取地址。

對(duì)于函數(shù)或數(shù)組,function_name(本身,后面沒(méi)有括號(hào))沒(méi)有任何其他含義,因此將它解釋為獲取函數(shù)的地址沒(méi)有問(wèn)題。

同樣反過(guò)來(lái):普通指針需要顯式解除引用,但指向函數(shù)的指針不會(huì)(再次,因?yàn)闆](méi)有其他合理的解釋?zhuān)越o定一個(gè)指向函數(shù)的指針,如:

int (*func)(param_list);

以下是彼此相同的 - 都調(diào)用任何功能func點(diǎn):

(*func)(params);func(params);


查看完整回答
反對(duì) 回復(fù) 2019-08-26
?
繁華開(kāi)滿天機(jī)

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

基本上,由于函數(shù)名稱(chēng)是“已知”的函數(shù),因此&并非絕對(duì)必要。對(duì)于數(shù)組,此行為是相同的。回想一下,函數(shù)本身不是變量,因此它的行為與您有時(shí)可能會(huì)有的不同。如果你有第二版K&R,你可以查看5.11節(jié)關(guān)于功能的指示,或者最后的參考手冊(cè),

A7.1節(jié)指針生成:如果某個(gè)類(lèi)型T的表達(dá)式或子表達(dá)式的類(lèi)型是“T的數(shù)組”,那么表達(dá)式的值是指向數(shù)組中第一個(gè)對(duì)象的指針,表達(dá)式的類(lèi)型是改為“指向T” 這種轉(zhuǎn)換不會(huì)取代表達(dá)式是一元&運(yùn)算符的操作數(shù),...類(lèi)似地,類(lèi)型為“函數(shù)返回T”的表達(dá)式除非用作&運(yùn)算符的操作數(shù),否則將轉(zhuǎn)換為“指針函數(shù)返回T.“

A7.4.2節(jié)地址運(yùn)算符:一元&運(yùn)算符獲取其操作數(shù)的地址....結(jié)果是指向左值引用的對(duì)象或函數(shù)的指針。如果操作數(shù)的類(lèi)型是T,則結(jié)果的類(lèi)型是“指向T的指針”。

據(jù)我所知,C99也是如此。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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