私は関数にcharポインタを渡そうとしています。それは呼び出し関数がそれを使用できるように、関数でそれを埋めます。呼び出し関数に奇妙なものが与えられたので、私は何をしているのか簡単な表現を書いた:
#include
#include
void bla(char *t)
{
t = (char*) malloc(5);
if (t != 0) {
t[0] = 'h';
printf("%c\n", t[0]);
}
}
int main(int argc, char **argv)
{
char b[10];
bla(b);
printf("%c\n", b[0]);
return 1;
}
私は、Cが引数のコピーを渡すことを何かする必要があるかどうかはよく分かりません。ポインタへのポインタを渡す必要がありますか、それともより良い解決策がありますか?
編集:
申し訳ありませんが、私はそれを取得していない。あなたはこの例を見てください:
#include
#include
void blub(char **t)
{
printf("%d\n", *t);
*t = (char*) malloc(sizeof(char) * 5);
*t[0] = 'a';
*t[1] = 'b';
printf("%d\n", *t);
printf("%d\n", *t[0]);
printf("%d\n", *t[1]);
}
int main(int argc, char **argv)
{
char *a;
blub(&a);
printf("%d\n", a);
printf("%d\n", a[0]);
printf("%d\n", a[1]);
return 1;
}
出力は次のとおりです。
./main
6154128
140488712
97
98
140488712
97
0 <== THIS SHOULD BE 98 AS ABOVE!?
なぜ私は関数blafuで98を取得し、メインでそれはnullポインタですか?私は完全に混乱している:/