Re: [問題] 關於c語言指標的問題
看板C_and_CPP作者smallpig01 (http://0rz.tw/3BGhp)時間14年前 (2010/06/03 13:56)推噓1(1推 0噓 4→)留言5則, 1人參與討論串3/3 (看更多)
※ 引述《guam (小兄弟阿哲)》之銘言:
: ※ 引述《stator (別急著吃棉花糖)》之銘言:
: : 各位c語言前輩好
: : 小弟在寫考古題時遇到幾題問題,希望能請各位前輩指教
: : struct student{
: : char *last_name
: : int student_id
: : char grade;
: : };
: : struct student tmp, *p=&tmp;
: : tmp.grade='A';
: : tmp.last_name="laugero";
: : 則下列運算結何者錯誤?
: : (a)tmp.last_name為Laugero
: : (b)*p-->last_name+1為a
: : (c)*(p-->last_name+2)為u
: : 答案是b
: : 想請問b和c有什麼不一樣呢?
: : 我知道的是*p-->last_name是看第一個字母為L,那p-->last_name+2是什麼呢?
: : 謝謝
: http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B
: "->" 的優先度高於"*"
: 所以 *p->last_name 和 *(p->last_name) 是一樣的
: 而"*" 比"+"(addition )的優先度高 所以會先做* (已修改)
: 也就是說 *p->last_name+1 == (*p->last_name)+1
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
如果這是對的
: (*p->last_name) == last_name[0] == 'l'
: 'l'+1 = 'm' (見ASCII表) 所以(b)為m
: 而 *(p->last_name+2) == last_name[0+2] == u
^^^^^^^^^^^^^^^^
(p->last_name+2) == ((p->last_name)+2) 結果應該是這樣,不是嗎
== ((last_name[0])+2) 以舉陣來表示的話會是這樣吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.108.63.85
推
06/03 14:07, , 1F
06/03 14:07, 1F
→
06/03 14:08, , 2F
06/03 14:08, 2F
→
06/03 14:09, , 3F
06/03 14:09, 3F
→
06/03 14:09, , 4F
06/03 14:09, 4F
→
06/03 14:10, , 5F
06/03 14:10, 5F
※ 編輯: smallpig01 來自: 122.117.39.40 (06/03 23:11)
※ 編輯: smallpig01 來自: 122.117.39.40 (06/03 23:12)
討論串 (同標題文章)