地址位置在彙編語言的字符,如果你有兩個變量,地址A0和字節T0,很容易儲存T0地址A0之初通過鍵入存儲在用C
sb $t0,0($a0)
現在,我想要做同樣的事情在C,在這種情況下我有
char* a0 = "AbC";
char t0 = 'w';
我知道我不能訪問和修改A0 [0]由於直接導致壞訪問錯誤。將a0中的開始「A」替換爲t0中的值的最有效方法是什麼?
地址位置在彙編語言的字符,如果你有兩個變量,地址A0和字節T0,很容易儲存T0地址A0之初通過鍵入存儲在用C
sb $t0,0($a0)
現在,我想要做同樣的事情在C,在這種情況下我有
char* a0 = "AbC";
char t0 = 'w';
我知道我不能訪問和修改A0 [0]由於直接導致壞訪問錯誤。將a0中的開始「A」替換爲t0中的值的最有效方法是什麼?
您不能替換'A'
,因爲它位於只讀的字符串文字中。
你可以,但是,存儲在數組中的字符串,這使得信件和訪問,然後替換'A'
容易:使用字符時
char a0[] = "AbC";
char t0 = 'w';
a0[0] = t0;
在C中,括號必須在標識符之後。 –
@DavidCullen固定。 – Downvoter
基本上* A0 =「ABC」語句,A0是隻有一個指針指向只讀內存,不能被修改。
但是,你仍然可以使用char * a0;語句,但您的代碼將被更多compilcated
(請記住,包括string.h中圖書館
char* a0 ;
char t0 = 'w';
a0= (char *)malloc (10);
strcpy(a0,"ABC");
a0[0]=t0;
'SB $ t0,0($ A0)' - 我強烈懷疑這將在工作我的程序架構,所以你的前提是錯誤的,對於C部分,我推薦閱讀一本好C書的指針章節(以及它之前的所有章節),這是基本的東西 – Olaf
那麼,我使用MARS模擬器只有當地址超出範圍時纔會失敗(如果你已經定義了一個標籤和一個值,那就不是) –