程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> c語言的2個問題

c語言的2個問題

編輯:C語言問答

c語言的2個問題

45

在一個函數中,有

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輸出字符串

追問:
格式化是什麼意思
追問:
還有假如,我要用指針變量q指向p所在的地址呢?不是指向p的值!就是嵌套指針這麼個意思吧,該怎麼賦值?
回答:

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所指向的地址內的值把?
回答:

char *q=p中 q和p具有同樣的意義 q[0]的值和p[0]的值相同。

但是char *q=&p中 q[0]的值是p的地址,和p[0]不一樣。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved