在C中的地址位置存储一个字符

Storing a character at address location in C

在汇编语言中,如果您有两个变量,地址 a0 和字节 t0,通过键入

可以很容易地将 t0 存储在地址 a0 的开头
sb $t0,0($a0)

现在,我想在 C 中做同样的事情,在这种情况下我有

char* a0 = "AbC";
char t0 = 'w';

我知道我不能直接访问和修改 a0[0],因为这会导致严重的访问错误。将 a0 中的开头 "A" 替换为 t0 中的值的最有效方法是什么?

"AbC" 分配在只读内存中。你想要它在 read/write 内存中。为此,使用

char a0[] = "AbC";

您现在有一个可以修改的字符数组(您有一个指向只读字符串的指针)。

您不能替换 'A',因为它在字符串文字中,它是只读的。

但是,您可以将字符串存储在数组中,这样可以使字母易于访问,然后轻松替换 'A'

char a0[] = "AbC";
char t0 = 'w';

a0[0] = t0;

基本上当使用 char*a0 = "ABC" 语句时,a0 只是一个指向不可更改的只读内存的指针。

但是,您仍然可以使用char* a0;声明,但您的代码会更复杂

(remember to include string.h library

char* a0  ;
char t0 = 'w';
a0= (char *)malloc (10);
strcpy(a0,"ABC"); 

a0[0]=t0;