指標的問題,乙個指標的問題

2022-06-30 11:11:46 字數 1076 閱讀 9799

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()<

C語言指標問題,C語言指標問題

這個演算法最後的時候 p和q都是指向a的,在最後這個時候a的結構是,q之前的是所有的除了版 之外權 的字元。q之後的都是原來a裡面的資料,對於這個時刻是髒資料。最後把q指向的那個位置賦值為 0可以在遍歷a的時候,不遍歷到髒資料,而這個時候p正好指向的就是 0,所以 q p 迴圈結束條件是 p 0,因...

c指標變數的問題,C語言指標變數大小的問題

p 1,是把1賦值給p所指向的物件,而p 1是把1賦值給p,這個1是被當做位址的。p 1和p 1是不同的概念,p 1 是賦值語句,還有在c語言中 1 0 是作為真假來用的,就相當於布林型數一樣。這兩個語句都是合法的。區別就是指標 的意思是取位址的意思。p是乙個指標,他的值是記憶體中一塊記憶體的位址,...

C語言的指標問題

這兩個程式都只有乙個主函式,當你需要呼叫函式的時候,就涉及到引數傳遞的問題了。這時如果你要在呼叫的函式中直接改變實參的值的話,引數傳遞就必須傳遞位址,也就是要用到指標了。如果你只是傳遞引數值的話,在呼叫的函式中,會為形參分配臨時的儲存空間,把實參的值傳遞給它,也就是說傳遞的只是值。可能你是剛開始接觸...