[問題] 有關於指標的題目

作者: chinagogoya (下棋逍遙遊)   2015-03-13 10:37:16
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C
問題(Question):
char *aa;
int *bb;
short *cc;
aa, bb, cc 的內容都是0,請寫出 *(aa+3), *(bb+6), *(cc+10) 所指到的位置
補充說明(Supplement):
只到的地方都NULL沒有宣告阿,是在問什麼?
作者: bben900911 (Ben)   2015-03-13 10:45:00
沒看錯的話 應該是問你三個char 六個int 十個short多大吧..?
作者: shadow0326 (非議)   2015-03-13 12:04:00
想考你知不知道指標上的加號跟指標類型有關不過他的問法滿奇怪的
作者: james732 (好人超)   2015-03-13 12:51:00
http://ideone.com/lRxPEI 大概就是這個意思吧?
作者: EdisonX (卡卡獸)   2015-03-13 17:46:00
aa=3 bb=24 cc=20,猜要的是這個
作者: OPIV (Monitor)   2015-03-13 19:29:00
*(aa+3)什麼的的型態又不是指標 怎麼會問指到哪裡= =
作者: littleshan (我要加入劍道社!)   2015-03-14 00:06:00
這些全是undefined behavior
作者: Killercat (殺人貓™)   2015-03-14 01:17:00
我猜他想問的是&(*(aa+3))吧?只是的確都是undefined behavior... XD 根本不知道有沒有吃到不該吃的記憶體* = 提取,這動作會要命的
作者: suhorng ( )   2015-03-14 01:23:00
但是就算不提取, 只要原本不是指到正確的真實存在的東西,而且索引在範圍內, 就未定義吧
作者: Killercat (殺人貓™)   2015-03-14 02:29:00
指過去不會有事 提取才會有事基本上你喜歡高興愛int *i = 1234567也是可以的...當然int是不能賦值給pointer啦 不過 int *i = NULL;i += 10; 基本上都不會出事,只有在提取的時候會炸比方說cout << *i; 就死了「亂指沒關係,但是不能提取一個不該提取的位置」
作者: suhorng ( )   2015-03-14 02:34:00
不是 undefined behavior 嗎?
作者: Killercat (殺人貓™)   2015-03-14 02:34:00
但是你單純cout << i;你會發現它指標正確的指到0x28undefined behavior指的是「提取不該提取的指標」
作者: suhorng ( )   2015-03-14 02:36:00
n4296 5.7.4 這邊定義運算時只有針對陣列才有定義的樣子?
作者: Killercat (殺人貓™)   2015-03-14 02:36:00
作者: Killercat (殺人貓™)   2015-03-14 02:38:00
maa, 你的意思是說*(aa+3)如果移動3*sizeof(aa)要是out of bound的話就會變成undefined嗎?我的認知是aa+3仍然有效 但是*(aa+3)的* (提取)是UB但是他說的是「指到的位置」(有點語焉不詳的感覺)
作者: Feis (永遠睡不著 @@)   2015-03-14 13:02:00
照標準應該是 aa 跟 aa+1 合法, aa+3 是 UB還是我誤會了些甚麼. aa 到底是不是指標 xD我看到 3*sizeof(aa) 有點疑惑阿. 我的前提是 aa 真的要指到東西啦.. Orz如果 aa 有指到東西 aa+1 就合法, 但是 aa+3 不行但是 *(aa+1) 也是 UB如果 aa 是亂指的話, aa+1, aa+3 都不行. 加 * 就都不行
作者: suhorng ( )   2015-03-14 13:12:00
剛好超過一格好像還可以XD 假設 aa 指到長度為 3那 aa, aa+1, aa+2, aa+3 (剛好超過一格)好像都可
作者: Feis (永遠睡不著 @@)   2015-03-14 13:14:00
原則上就是要指到同一個陣列內或陣列後一格如果指向的不是陣列的話, 會當作只有一個元素的陣列suhorng: 我上面其實是想解釋如果指向的不在陣列內如果 i 是 null pointer, 那 i + 10 是未定義
作者: suhorng ( )   2015-03-14 13:24:00
i see
作者: Feis (永遠睡不著 @@)   2015-03-14 13:31:00
不過這個問題不已經是 FAQ 了嗎. Q_Q

Links booklink

Contact Us: admin [ a t ] ucptt.com