Re: [問題] 關於c語言指標的問題
※ 引述《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
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.212.238
→
05/30 14:22, , 1F
05/30 14:22, 1F
→
05/30 17:38, , 2F
05/30 17:38, 2F
→
05/30 17:38, , 3F
05/30 17:38, 3F
→
05/30 17:38, , 4F
05/30 17:38, 4F
→
05/30 19:11, , 5F
05/30 19:11, 5F
※ 編輯: guam 來自: 140.113.212.238 (05/30 19:17)
→
05/30 19:37, , 6F
05/30 19:37, 6F
→
05/30 21:58, , 7F
05/30 21:58, 7F
討論串 (同標題文章)