在一個函數中,有
void myfun(char *p)
{ char *q=p;................................}
請問,q指針所指向的值是p這個地址,還是p所指向的值呢?
另外,請問printf、scanf和gets、puts有什麼區別?
補充:如果上述語句char *q=p換成char *q=*p;又代表什麼意思呢?q是函數內的局部指針變量,將p賦值給q,那麼q和p就指向了同一地址,用*q可以引用p指向的元素。
printf和scanf分別是格式化輸出和格式化輸入函數,gets沒有格式化選項,只獲取鍵盤輸入的字符串,puts輸出字符串
char *q=p 的意思就是定義一個字符指針變量q,指向p的地址,這樣q和p指向同一地址,q和p的作用一樣。和“指向指針的指針”不是一回事。
char *q=p中,q指向的是p指向的地址,也就是他們指向同一地址。
上面說錯了,q指向的不是p的地址。如果char *q=&p 那麼q指向的才是p的地址。
char *q=p中 q和p具有同樣的意義 q[0]的值和p[0]的值相同。
但是char *q=&p中 q[0]的值是p的地址,和p[0]不一樣。