1樓:單汀蘭建雪
鬼火狼煙
說的沒錯,指標其實適合普通的變數一樣的,你把它當作一個int型別的數就行了。
變數的儲存位置:
全域性變數和靜態變數都是儲存在資料段。
普通變數
如果是自己用
new()
申請的,會儲存在
堆裡面。
其他的函式裡面的區域性變數,一般被優化成對
暫存器的訪問,如果暫存器分配完了,就會儲存在棧裡面,有函式呼叫的時候,改變指標時留出空間。
2樓:祈玉花霍碧
在編譯的時候會根據不同的資料型別進行分配。
指標,動態陣列都是動態分配中的堆疊分配,指標常量就分配在靜態資料區了。
————同意
指標跟普通變數是一樣的
3樓:泉長征司月
一個指標變數在記憶體中佔兩個位元組(small模式編譯)
一個指標變數在記憶體中佔四個位元組(32位機器上)
一般都是32位機器的,所以四個位元組咯。
4樓:喜實琦倩
c語言中指標變數和普通變數的處理沒有任何區別,都是在資料棧中開闢的記憶體空間,只不過一個存的是記憶體地址而另一個是存的資料而已.
btw:一樓不懂無所謂,出來誤導人可是你的不對了呵呵,sp是棧指標暫存器,儲存的是棧頂指標,和c裡面的指標變數沒有任何關係.
5樓:容智夏醜
我認為指標變數就在**中。
c語言的變數值是通過該變數的記憶體地址定址得到的,而對於一個已經編譯好的程式,變數的地址都是確定的值,不可以更改。這是因為程式在編譯時編譯器已經通過語法分析把指標變數的地址值計算出來了,所以指標變數實際上不用儲存在記憶體堆疊或資料段中,而是包含在彙編**裡面。
而普通變數在資料段中
至於堆疊那是用來儲存上下文、程序切換、以及傳遞引數的。
關於C語言指標變數ppp的區,關於C語言指標變數 p p p 的區別
森祿欽春桃 首先搞明白一點,printf語句中表示式的執行順序是從右向左的,並且對於 q 首先進行解引用操作,再自增,即 q,q q 1 所以說第一個printf的輸出為22對於第二個printf,首先執行 q 再執行 p 對於 q 可以轉化為先執行 q 即輸出它的值,再執行 q q 1,最後輸出 ...
C語言指標動態記憶體分配,C語言中的動態記憶體分配的用法舉例
void malloc size t size 這個函式請求分配大小為size位元組的記憶體,並返回指向該塊記憶體起始位置的指標 它接受的引數型別size t是unsigned int的一個typedef,這種型別用來表示資料型別的大小 如char型別的大小為1 位元組 它返回的是一個void 型別...
c語言關於為指標的指標分配記憶體的問題
首先 int 是一個二級指標,它是指標的指標,如果你要申請一個二維陣列,有下面兩個方法 int val int malloc sizeof int 10 int i for i 0 i 10 val i int malloc sizeof int 10 然後你可以這樣引用 val m n value...