一般に、このような文字の配列を作成するとき。
char string[100]; //allocate contigious location for 100 characters at compile time
ここで、文字列は連続した場所のベース アドレスを指します。メモリアドレスが4000から始まると仮定すると、次のようになります
--------------------------------------
|4000|4001|4002|4003|...........|4099|
--------------------------------------
変数stringは4000を指します。4000 の値を格納するには、*(4000) を実行できます。
ここで次のようにすることができます
*string='a'; //4000 holds 'a'
*(string+1)='b'; //4001 holds 'b'
*(string+2)='c'; //4002 holds 'c'
注:配列には、c の 3 つの形式のいずれからでもアクセスできます。
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 が 4 バイトのメモリを使用すると仮定します。
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