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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

C
忽然笑 2019-10-30 12:45:34
為了理解C語言中指針的行為,我對以下內(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++由于第二個函數(shù)(add_one_v2)中的語句顯然與之不同,因此該語句究竟能做什么*our_var_ptr = *our_var_ptr +1?
查看完整描述

3 回答

?
SMILET

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

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


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

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


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


(*our_var_ptr)++;


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

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

好,


*our_var_ptr++;

它是這樣的:


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

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

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

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

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


*our_var_ptr;

our_var_ptr = our_var_ptr + 1; 

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


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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