我有一個考試問題,我給出了以下問題: -解釋p =(char *)66的作用。
什麼是4號線的含義
1 char i , *p;
2 i=65;
3 p=&i;
4 p=(char*)66;
5 (*p)++;
可能有人請幫助(在4號線發生什麼?)?
我有一個考試問題,我給出了以下問題: -解釋p =(char *)66的作用。
什麼是4號線的含義
1 char i , *p;
2 i=65;
3 p=&i;
4 p=(char*)66;
5 (*p)++;
可能有人請幫助(在4號線發生什麼?)?
「66」將轉換爲(字符*)型
看一看This tutorial這給指點一些不錯的信息。我不想告訴你它究竟做了什麼,因爲它不會教什麼,而是給你一個鸚鵡時尚的答案,你會被困在這樣的下一個問題。
你想要尋找的區域是鑄造和指針。
p=(char*)66;
將內存中的地址66轉換爲指針,然後在下一行增加它。按原樣,這段代碼可能不起作用,除非你有權限寫入RAM中的字節66。
我固定了第4行以使代碼更加明智。
1 char i , *p;
2 i=65;
3 p=&i;
4 *p=(char)66;
5 (*p)++;
在第1行,你有一個char i
和字符指針p
。
在第2行中,i
保留值65,即ASCII中的字母'A'。
第3行,p
指向地址i
。
在第4行中,p
指向的地址中的值爲66
,這是ASCII中的字母B
。 由於p
指向地址i
,因此i
的值也爲66
。
在第5行,即p
指向從66
增加到67
,這使得它在ASCII信C
在地址中的值。
如果打印i
或*p
你會得到字母 'C'。
ITYM第4行是'* p =(char)66;' – 2012-07-23 15:58:49
沒錯,修正了它。 – 2012-07-23 17:56:16
由於p
是一個指針(在本例中爲char),它包含一個地址。第4行簡單地將地址66
寫入p
。該行執行後,p
指向地址66
。這是否是一個有效的地址是一個不同的問題。
學習一門編程語言時,即學習如何把它大聲說出幫助人們瞭解語言意味着我發現:
所以p = (char *)66;
讀我爲「分配66至P」,和其他人所說,(char *)
是演員。它正在將(改變類型的)66轉換爲char *
,它被稱爲指向char的指針。或者,一個字符變量的地址。
基本上整條線都說「在地址66處,你會找到一個字符」,並將66分配給先前指向i
中保存的字符的指針。
使用在這種情況下,星號(*
)的,是由這意味着,「在p
值是66,它是一個字符值」的路線*p = (char) 66;
不同。因此,儘管我們首先查看的路線修改了p
中的地址,但第二行修改了已在p
中保存的地址的值。
此外,最後一行((*p)++
)的意思是:「取p的值,然後加1,不管它是什麼。」
請記住,這些不是這個問題的教科書答案,這是您在回答問題之前對問題的看法。另外,如果這真的是你在測試中給出的代碼,重要的是要注意在現實生活中這樣做是一個壞主意。在第4行和第5行中,您正在修改內存中的一個隨機位置,該位置可能不屬於您的應用程序,這可能(也可能會)導致崩潰和其他令人討厭的事情發生。
你對它的作用有什麼想法? – 2012-07-23 11:04:17
你現在正在參加考試嗎? :-) – 2012-07-23 11:05:29
將整型轉換爲指針?不用了,謝謝。 – 2012-07-23 11:05:40