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

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

在解除引用的指針上增加增量?

在解除引用的指針上增加增量?

C
忽然笑 2019-10-30 12:45:34
為了理解C語(yǔ)言中指針的行為,我對(duì)以下內(nèi)容(以下示例代碼)感到有些驚訝:#include <stdio.h>void add_one_v1(int *our_var_ptr){    *our_var_ptr = *our_var_ptr +1;}void add_one_v2(int *our_var_ptr){    *our_var_ptr++;}int main(){    int testvar;    testvar = 63;    add_one_v1(&(testvar));         /* Try first version of the function */    printf("%d\n", testvar);        /* Prints out 64                     */    printf("@ %p\n\n", &(testvar));    testvar = 63;    add_one_v2(&(testvar));         /* Try first version of the function */    printf("%d\n", testvar);        /* Prints 63 ?                       */    printf("@ %p\n", &(testvar));   /* Address remains identical         */}輸出:64@ 0xbf84c6b063@ 0xbf84c6b0*our_var_ptr++由于第二個(gè)函數(shù)(add_one_v2)中的語(yǔ)句顯然與之不同,因此該語(yǔ)句究竟能做什么*our_var_ptr = *our_var_ptr +1?
查看完整描述

3 回答

?
SMILET

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

這是使C和C ++變得如此有趣的那些小陷阱之一。如果您想彎曲您的大腦,請(qǐng)找出這一點(diǎn):


while (*dst++ = *src++) ;

這是一個(gè)字符串副本。指針不斷遞增,直到復(fù)制了值為零的字符。一旦知道了這種技巧的作用,您將永遠(yuǎn)不會(huì)忘記++如何再次處理指針。


PS您始終可以用括號(hào)覆蓋運(yùn)算符順序。以下將增加所指向的值,而不是指針本身:


(*our_var_ptr)++;


查看完整回答
反對(duì) 回復(fù) 2019-10-30
?
隔江千里

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

好,


*our_var_ptr++;

它是這樣的:


取消引用首先發(fā)生,給您指示的存儲(chǔ)位置our_var_ptr(包含63)。

然后對(duì)表達(dá)式求值,結(jié)果63仍然是63。

結(jié)果被丟棄(您對(duì)此不做任何事情)。

our_var_ptr然后在評(píng)估后增加。它正在改變指針指向的位置,而不是指針指向的位置。

它實(shí)際上與執(zhí)行此操作相同:


*our_var_ptr;

our_var_ptr = our_var_ptr + 1; 

說(shuō)得通?馬克·蘭瑟姆(Mark Ransom)的答案很好地說(shuō)明了這一點(diǎn),只是他實(shí)際上使用了結(jié)果。


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

添加回答

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