在汇编语言中,如果你有两个变量,地址a0和字节t0,通过输入
可以很容易地将t0存储在地址a0的最开头。sb $t0,0($a0)
现在,我想在C中做同样的事情,在这种情况下我有
char* a0 = "AbC";
char t0 = 'w';
我知道我无法直接访问和修改a0 [0],因为这会导致错误的访问错误。用t0中的值替换a0中的开头“A”的最有效方法是什么?
答案 0 :(得分:7)
"AbC"
分配在read-ony内存中。你想要它在读/写内存中。为此,请使用
char a0[] = "AbC";
如果你可以修改的字符(你有一个指向只读字符串的指针),你现在有一个数组。
答案 1 :(得分:7)
您无法替换'A'
,因为它位于字符串文字中,这是只读的。
但是,您可以将字符串存储在一个数组中,这样可以使字母可以访问,然后轻松替换'A'
:
char a0[] = "AbC";
char t0 = 'w';
a0[0] = t0;
答案 2 :(得分:1)
基本上使用char * a0 =“ABC”语句时,a0只是一个指向无法更改的READ-ONLY内存的指针。
但是,您仍然可以使用char * a0;声明,但你的代码将更加完整
(记得包括string.h库
char* a0 ;
char t0 = 'w';
a0= (char *)malloc (10);
strcpy(a0,"ABC");
a0[0]=t0;