C語言:有趣的指標題目 - 迷途工程師的網路雜記

文章推薦指數: 80 %
投票人數:10人

剛在做題目. 碰到一題要寫函數的,要在主程式裡面設一個Num,要傳指標進去函數裡面,然後每呼叫一次函數,Num就要+1. 所以我在函數裡寫道. *ptr++;. 迷途工程師的網路雜記 跳到主文 想擺什麼擺什麼,主要擺實驗的結果或心得文,不歡迎酸言酸語~不喜勿入~歡迎左轉~^^~ 部落格全站分類:心情日記 相簿 部落格 留言 名片 Mar07Thu201911:18 C語言:有趣的指標題目 剛在做題目 碰到一題要寫函數的,要在主程式裡面設一個Num,要傳指標進去函數裡面,然後每呼叫一次函數,Num就要+1 所以我在函數裡寫道       *ptr++; 以為這樣跟平常的i++效果一樣:值應該會增加1吧! 沒想到....           居然不行XD||| 測試結果是會把位置+1,然後才取值   然後上網查了查優先性, 發現取值運算子"*"跟"++"的優先位階是一樣,順序是「由右至左」XD||| 這就解釋為什麼會錯了  *ptr++會先執行++,所以位置變成ptr+1 然後*才作用,取了指向ptr+1的位置的值 === 附上程式碼   voidcount(int*); intmain(void) {    intnum=5,*ptr=#    printf("addressofnum=%p\n",&num);    printf("valueofptr=%p\n",ptr);    printf("valueof*ptr=%d\n\n",*ptr);    count(ptr);    count(ptr);    count(ptr);      } voidcount(int*ptr){ printf("valueofptr=%p\n",ptr); printf("valueof*ptr=%d\n",*ptr); *ptr++; printf("valueofptr=%p\n",ptr); printf("valueof*ptr=%d\n\n",*ptr); }   執行結果:沒動到要改的值,值一直是5,只改到指標指向的位置T__T 解決方法: 1.加括號:(*ptr)++; 2.寫成:*ptr+=1;         文章標籤 指標 pointer 題目 優先性 全站熱搜 創作者介紹 迷途工程師 迷途工程師的網路雜記 迷途工程師發表在痞客邦留言(0)人氣() E-mail轉寄 全站分類:數位生活個人分類:C語言此分類上一篇:C語言:pow()的陷阱-.- 此分類下一篇:指標的心得 上一篇:C語言:pow()的陷阱-.- 下一篇:指標的心得 歷史上的今天 2019:while的語法問題 2019:指標的心得 ▲top 留言列表 發表留言 贊助商連結 站方公告 [公告]2022年度農曆春節期間服務公告[公告]MIB廣告分潤計劃、PIXwallet錢包帳戶條款異動通知[公告]2021年度農曆春節期間服務公告 活動快報 舒特膚經典三件組 舒特膚全新升級!有效解決敏弱肌5大問題:乾燥、粗... 看更多活動好康 我的好友 熱門文章 文章分類 python(1)LibreOfficeBasic(1)ACPIspec翻譯(1)通訊協定specification翻譯(4)MT5(1)C語言(6)Arduino文件翻譯(5)Arduino(2)MT4(6)職場見聞錄(8)澳洲之行(0)沒事叫叫(6)未分類文章(3) 最新文章 最新留言 動態訂閱 文章精選 文章精選 2022五月(1) 2022一月(1) 2021十一月(1) 2021八月(1) 2021四月(1) 2021三月(1) 2020八月(3) 2020三月(4) 2020二月(1) 2019九月(1) 2019四月(1) 2019三月(5) 2019二月(4) 2019一月(1) 2018十二月(1) 2018十一月(1) 2018十月(4) 2018九月(1) 2018七月(2) 2018五月(1) 2017五月(1) 2013十二月(1) 2013七月(1) 2013二月(1) 2010八月(2) 2009四月(1) 2009一月(1) 所有文章列表 文章搜尋 新聞交換(RSS) 誰來我家 參觀人氣 本日人氣: 累積人氣: QRCode POWEREDBY (登入) 贊助商連結 回到頁首 回到主文 免費註冊 客服中心 痞客邦首頁 ©2003-2022PIXNET 關閉視窗



請為這篇文章評分?