1樓:匿名使用者
兩個問題
首先你要清楚
陣列a[ ] 當只有 乙個 陣列 頭 a 的時候 代表的是 陣列a的首位址
但是 cout 用法是 當 此陣列為 char型別的時候 cout <
他會自動賦予 * 取位址中的值 而int 型別的陣列就不會加 * 其次char * get(){} 和 char * gett(){}是區域性函式 它裡面定義的變數都是區域性變數,當函式使用結束時,區域性變數 會在 自己儲存的位置,也就是棧中釋放,那個值 就不存在啦 。 所以,當你 cout << get();時 是找到了 那個 當時定義的 數字 a[ ]的位址 但是裡面的值已經被釋放掉了,位址是存在的,但是內容就不一定是什麼東西啦, 肯定不是你之前定義的東西。 但是 cout< 第二個 cout< a[ ]的首位址 所以 是那個值 那個 幻の上帝 說的 是對 的 我說的也沒錯啊 我這樣很好理解,你指望人家能看懂你那些定義似的語言?? 還有 我說了char 和 char *?? char 型別的陣列 不懂? 返回的是 陣列的頭 a 它代表的是陣列的首位址,所以返回型別只能是char * 東西是要一步一步理解的,你那樣說別人很難懂的 2樓: 不能返回區域性變數的位址,區域性變數在在棧上儲存的,函式執行完畢會釋放棧空間,區域性變數的位址會無效的。 3樓:匿名使用者 將位址顯示為char型別了,所以是亂碼,你可以把在輸出get()的返回值時強制轉換一下,就是位址了。 4樓: 因為cout《輸出時,是預設以字串的形式輸出的,你可以採用cout<<(int)get()< 這個演算法最後的時候 p和q都是指向a的,在最後這個時候a的結構是,q之前的是所有的除了版 之外權 的字元。q之後的都是原來a裡面的資料,對於這個時刻是髒資料。最後把q指向的那個位置賦值為 0可以在遍歷a的時候,不遍歷到髒資料,而這個時候p正好指向的就是 0,所以 q p 迴圈結束條件是 p 0,因... p 1,是把1賦值給p所指向的物件,而p 1是把1賦值給p,這個1是被當做位址的。p 1和p 1是不同的概念,p 1 是賦值語句,還有在c語言中 1 0 是作為真假來用的,就相當於布林型數一樣。這兩個語句都是合法的。區別就是指標 的意思是取位址的意思。p是乙個指標,他的值是記憶體中一塊記憶體的位址,... 這兩個程式都只有乙個主函式,當你需要呼叫函式的時候,就涉及到引數傳遞的問題了。這時如果你要在呼叫的函式中直接改變實參的值的話,引數傳遞就必須傳遞位址,也就是要用到指標了。如果你只是傳遞引數值的話,在呼叫的函式中,會為形參分配臨時的儲存空間,把實參的值傳遞給它,也就是說傳遞的只是值。可能你是剛開始接觸...C語言指標問題,C語言指標問題
c指標變數的問題,C語言指標變數大小的問題
C語言的指標問題