通常,当您创建这样的字符数组时。
char string[100]; //allocate contigious location for 100 characters at compile time
这里的字符串将指向连续位置的基地址。假设内存地址从4000开始,那么它会像
--------------------------------------
|4000|4001|4002|4003|...........|4099|
--------------------------------------
变量字符串将指向4000。要将值存储在 4000,您可以执行 *(4000)。
在这里你可以这样做
*string='a'; //4000 holds 'a'
*(string+1)='b'; //4001 holds 'b'
*(string+2)='c'; //4002 holds 'c'
注意:数组可以通过 c 中的三种形式中的任何一种来访问。
string[0] => 0[string] => *(string+0) => points to first element in string array
where
string[0] => *(4000+0(sizeof(char))) => *(4000)
0[string] => *((0*sizeof(char))+4000) => *(4000)
*string => *(4000)
如果是整数数组,假设 int 占用 4bytes 内存
int count[100]; //allocate contigious location for 100 integers at compile time
这里 count 将指向连续位置的基地址。假设内存地址从 4000 开始,那么它会像
--------------------------------------
|4000|4004|4008|4012|...........|4396|
--------------------------------------
变量count将指向4000。要将值存储在 4000,您可以执行 *(4000)。
在这里你可以这样做
*count=0; //4000 holds 0
*(count+1)=1; //4004 holds 1
*(count+2)=2; //4008 holds 2
所以来到你的代码,你的目标可以这样实现。
#include<stdio.h>
#include<stdlib.h>
int main()
{
char str[100];
*str='a';
*(str+1)='b';
*(str+2)='c';
printf("%s",str);
return 0;
}
Output: abc