求解 07年4月2級C語言填空17題

時間 2022-05-24 21:15:04

1樓:匿名使用者

既簡潔又清晰的分析:

由s1=s2=(char*)malloc(sizeof(char)); 語句可知s1,s2指向同一地址,賦值語句

*s1=15;

*s2=20;

都被賦值在同一記憶體地址中,所以*s2的值將覆蓋住*s1的值,即*s1=20;所以

m=*s1+*s2=20+20=40;

你不妨將*s1=15; *s2=20;語句順序對調一下,其輸出結果應為30。

malloc一塊size為sizeof(char)的記憶體佔一個位元組,也即八個位元,所以整型值賦給字元型別時在記憶體中是以二進位制形式儲存的,只對其低八位位元組參與處理。所以不僅可以裝兩位數,3,4,5,6。。位都能裝,不過只是對其二進位制的低八位參與處理。

2樓:一破天

s1=s2=(char*)malloc(sizeof(char));使指標s1和s2同時指向一個開闢的位元組儲存空間,

*s1=15;

*s2=20;

先後對這個位元組空間賦值,則賦值結束時,空間內數值為20,所以相加為40

3樓:匿名使用者

***********************************===

問題補充:malloc一塊size為sizeof(char)的記憶體空間,佔用多少位元組?能裝下兩位數麼?

***********************************===

char佔1個位元組,也就是8位,所以取值範圍為-128~127,

所以放下兩位數沒有任何問題。

注意這一句:

s1=s2=(char*)malloc(sizeof(char));

其實這一句的作用是兩個:

1. malloc一塊size為sizeof(char)的記憶體空間

2. 將指標s1和s2都指向這個空間的地址

所以s1和s2是指向同一個地址空間的,

也就是說對於*s1和*s2的操作,其實是對於同一個地址空間的操作。

所以:*s1=15; //將這個地址空間中的值賦為15

*s2=20; //將這個地址空間中的值賦為15

由於s1和s2是指向同一個地址空間的,所以上述賦值處理後,其實這個地址空間內的資料值就等於20(就是最後一次賦的值)

m=*s1+*s2;

由於s1和s2是指向同一個地址空間的,所以這一句其實就是將這個地址中的值加兩次,也就是20+20,等於40了

農曆2oo4年1o月18是什麼星座

雪山飛胡 你好!對應陽曆是11月29號,是射手座 白羊座 03月21日 04月20日 金牛座 04月21日 05月20日 雙子座 05月21日 06月21日 巨蟹座 06月22日 07月22日 獅子座 07月23日 08月22日 座 08月23日 09月22日 天秤座 09月23日 10月22日 天...

2023年4月1號後b2增駕a2需要考科一嗎l?

當然需要了,我們在增加的時候都是必須考理論的。所以在考試的時候都有科目一這項,它主要是基礎理論知識。駕校一點通提供考駕照,駕照考試練習,科目一模擬考試,駕校學車,駕校報名等駕考服務。選駕校 選教練 2022年駕駛證資格證題庫練習和科目一模擬考試練習,科目四模擬考試練習服務。駕校一點通提供便捷的駕照考...

農曆早上2點出生,算命,農曆2023年4月13出生,求大師幫忙算下八字!

出生公曆 1992年5月15日2時0分,星期五。八字重量 3兩0錢 年0.7兩 月0.9兩 日0.8兩 時0.6兩。袁天罡斷 碌碌忙忙苦中求,東奔西走何日休,若使終身多勤儉,老來尚可免憂慮。此命為人多才多能,心機為巧,祖業凋零,離鄉別井可成家業,兄弟少力,駁雜多端,出外有貴人扶持,一生無刑剋,無大難...