在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;
在汇编语言中,如果您有两个变量,地址 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;