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

Mån*_*son 2 c pointers memory-address

在汇编语言中,如果你有两个变量,地址a0和字节t0,通过输入很容易将t0存储在地址a0的最开头

sb $t0,0($a0)
Run Code Online (Sandbox Code Playgroud)

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

char* a0 = "AbC";
char t0 = 'w';
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*vie 7

"AbC"在read-ony内存中分配.你想要它在读/写内存中.为此,使用

char a0[] = "AbC";
Run Code Online (Sandbox Code Playgroud)

如果你可以修改的字符(你有一个指向只读字符串的指针),你现在有一个数组.


cad*_*luk 7

你不能替换'A'它,因为它是一个只读的字符串文字.

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

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

a0[0] = t0;
Run Code Online (Sandbox Code Playgroud)