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

时间:2016-09-22 15:30:04

标签: c pointers memory-address

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

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

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

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

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

3 个答案:

答案 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;