1樓:上網去跑跑
class cdemo
;void main()
(int*)demo :表示強制型別轉換。把cdemo型別的指標轉換成int 型
(int*)demo+1:指標向下移動一位,正好指向b的位址。
*((int*)demo+1):向b這個位址裡面寫入20
*(int*)(demo+4)=20;//你這樣寫成什麼了???+4是什麼意思???
所有型別的指標長度都為2.
當你能確定當前指標的指向時,+1就是向高位移動一位。此處的1是邏輯1.對於整型就是「2」。
在類cdemo 中有兩個成員a和b,它們在絕對位址上是相連的。a的位址+1就是b
的位址。
希望你能明白。
覺得這樣寫不太好,乾脆直接寫成:
demo->b=20不就行了嗎??
2樓:錘子錘子大鎚頭
你怎麼知道a,b的位置是連續的呢?為什麼要用demo+4 去表示b呢?
3樓:匿名使用者
是這樣的
demo+4之後所指的位置是原來的demo後面4個demo的位置,而不是4個位元組的意思
你這裡要加四個位元組,才能顯示20,而不是加自個demo類大小的位元組
4樓:罵了隔b的
瘟道死動態分配位址的,(int*)(demo+4)尋不到位址吧,我也是新手,期待高手...
c++的一道簡單的題目。。
5樓:
你那樣判斷的邏輯上有錯。
#include
using namespace std;
int main()
}for (c=1; c }cout< return 0;} c++的一道簡單題目 6樓:匿名使用者 你的if語句亂套了,改成用&&連線就可以了,else只會進入上乙個if不成立的情況 你的程式改正後的 #include using namespace std; int main() return 0;} 一道簡單c++題目 7樓:巴扎嘿 這個是不是將乙個八進位制數字(字串格式的)轉換為十進位制數? s是乙個指向字串的指標。*s-'0'就是將當前的數字字元轉換為數字。比如'5'-'0'就變成5了。 n=n*8+*s-'0'; 每位計算出數字後乘以8,因為是8進製的。轉換為十進位制。計算出的n應該就是對應的十進位制數 8樓:繆立軍 n=*s-'0',就是兩個字串相減,這裡應該是想得到對應字串的數字表示,如'8'得到數字量8,'0'相當於數字字元的ascii碼偏移,如果知道字元'0'的ascii碼值,減去其ascii碼值,效果是一樣的,用減'0'的好處在於可以不用記ascii碼值。 不懂可以繼續問我 9樓:黑暗v英雄 n=*s-'0';是兩個字元相減。就是s裡面的字元減去字元0。這裡是把字元轉成整型相減的,可以去查書附錄的ascii碼表。比如'b'-'a'的結果就是1。 n=n*8+*s-'0';的意思就是把n乘以8後加上s裡面的字元減去字元0,這裡是把字元看成整型計算的。 樓主,抄樓上不太會說話,不要理,bai等等我貼出 沒有其他語言基礎du的c語言初學者起zhi步是慢了一dao點,但是要渣油 include int main return 0 dim arr斐波 那契數bai 列du 19 as integer arr斐波那 zhi契數dao列回 答 0 1 arr... include include 標頭檔案 include 標頭檔案 int main int a 111 b 100 c 111 n,m,k 0,t,l 0,s scanf d d n,m srand unsigned time null srand 就是給rand 提供種子 for int i 0... include include void main sum sum max min score sum n 2 printf 2f n score 太多了,看到就累! sum應在while迴圈中初始化,也就是說每次輸入前sum都必須清0 include include void main sum s...一道C語言程式設計題求解一道簡單的C語言程式設計題
C語言的一道題目,C語言tow函式題目一道
一道很簡單的C語言題