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

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

printf(“%p”)并轉(zhuǎn)換為(void *)

printf(“%p”)并轉(zhuǎn)換為(void *)

C
米脂 2019-09-03 16:58:47
在最近的一個(gè)問(wèn)題中,有人提到當(dāng)使用printf打印指針值時(shí),調(diào)用者必須將指針強(qiáng)制轉(zhuǎn)換為void *,如下所示:int *my_ptr = ....printf("My pointer is: %p", (void *)my_ptr);對(duì)于我的生活,我無(wú)法弄清楚為什么。我發(fā)現(xiàn)了這個(gè)問(wèn)題,幾乎是一樣的。問(wèn)題的答案是正確的 - 它解釋了整數(shù)和指針的長(zhǎng)度不一定相同。這是當(dāng)然的,真實(shí)的,但是當(dāng)我已經(jīng)在的情況下有一個(gè)指針,像上面,我為什么要由鑄鐵int *到void *?什么時(shí)候int *與void *不同?事實(shí)上,什么時(shí)候(void *)my_ptr生成任何與簡(jiǎn)單不同的機(jī)器代碼my_ptr?更新:多個(gè)知識(shí)淵博的響應(yīng)者引用了標(biāo)準(zhǔn),說(shuō)傳遞錯(cuò)誤的類(lèi)型可能會(huì)導(dǎo)致未定義的行為。怎么樣?我期望printf("%p", (int *)ptr)并printf("%p", (void *)ptr)生成完全相同的堆棧幀。兩個(gè)調(diào)用何時(shí)生成不同的堆棧幀?
查看完整描述

3 回答

?
白衣染霜花

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

在C語(yǔ)言中,所有指針類(lèi)型的表示可能不同。所以,是的,int *不同于void *??梢院茈y(或不可能)找到能夠說(shuō)明這種差異的真實(shí)平臺(tái),但在概念層面,差異仍然存在。

換句話(huà)說(shuō),通常情況下,不同的指針類(lèi)型具有不同的表示。int *不同于void *和不同double *。就C語(yǔ)言而言,您的平臺(tái)使用相同的表示形式void *并且int *只不過(guò)是巧合。

一些指針類(lèi)型都要求有相同的表述語(yǔ)言狀態(tài),其中包括void *主場(chǎng)迎戰(zhàn)char *,指向不同的結(jié)構(gòu)類(lèi)型,或者說(shuō),int *const int *。但這些只是一般規(guī)則的例外。


查看完整回答
反對(duì) 回復(fù) 2019-09-03
?
瀟瀟雨雨

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

其他人已經(jīng)充分解決了傳遞int *一個(gè)原型函數(shù)的情況,該函數(shù)具有固定數(shù)量的參數(shù),這些參數(shù)需要不同的指針類(lèi)型。


printf不是這樣的功能。它是一個(gè)可變參數(shù)函數(shù),因此默認(rèn)參數(shù)升級(jí)用于其匿名參數(shù)(即格式字符串之后的所有內(nèi)容),并且如果每個(gè)參數(shù)的提升類(lèi)型與格式效應(yīng)器所期望的類(lèi)型不完全匹配,則行為未定義。特別是,即使 int *并且void *具有相同的表示,


int a;

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

有未定義的行為。


這是因?yàn)檎{(diào)用幀的布局可能取決于每個(gè)參數(shù)的確切具體類(lèi)型。為指針和非指針類(lèi)型指定不同參數(shù)區(qū)域的ABI已經(jīng)在現(xiàn)實(shí)生活中發(fā)生(例如,Motorola 68000希望您盡可能地在地址寄存器和數(shù)據(jù)寄存器中的非指針中保持指針)。我不知道任何真實(shí)的ABI會(huì)分離不同的指針類(lèi)型,但它是允許的,聽(tīng)到一個(gè)我也不會(huì)感到驚訝。


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

添加回答

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