例 1
char buf[256];
void manipulate(char * p)
{
strcpy(p,"Just test string");
}
int main()
{
manipulate(buf);
printf("%s\n",buf);
}
上記の例では、buf 文字列はスタティック バッファ メモリとして初期化されます。この manipulate
関数は、メッセージをバッファ メモリにコピーします。
例 2
char *buf;
void initialize(char **p)
{
*p = malloc(256*sizeof(char));
}
void manipulate(char * p)
{
strcpy(p,"Just test string");
}
int main()
{
initialize(&buf)
manipulate(buf);
printf("%s\n",buf);
}
2 番目の例では、buf は定義で初期化されていない文字列へのポインタです。ここでの初期化関数initialize
はバッファを使用するためchar **p
、これを使用した理由は、関数がポインタのアドレスを初期化することを意味します。*p
関数で行われたように変数を渡すと、ポインターが指してmanipulate()
いるメモリの内容のみを変更できることを意味します。p