私は朝からこれを修正するのに苦労してきました。値
'pd'
pm
は機能外で変更されません。誰かが間違いを教えてもらえますか?関数とmemcpyへの参照としてchar配列を渡す方法
void foo(u8 *pm, u8 *pd)
{
pm = "IWR ";
memcpy(pd, pm, sizeof(pm));
printf("in foo pm = %s, pd = %s \n", pm, pd);
}
int main()
{
u8 pm[5] = "0";
u8 pd[5] = "IWO ";
printf("pm = %s, pd = %s \n", pm, pd);
foo(pm, pd);
printf("after pm = %s, pd = %s \n", pm, pd);
}
fooへの呼び出しの後に私の最終的な出力がpm
=(ヌル)とpd
= "IWO" です。私は「pm」も価値を変えるだろうと思った。
(ここideone上のコードであるが、0
ではなく(null)
としてその場合pm
プリント理由です。?)
pm = 0, pd = IWO
in foo pm = IWR , pd = IWR
after pm = 0, pd = IWR
[ヘッドポインタを変更見てみましょう]を見つけることができるはずですCまたはC++? (長さ) –
C++でも文字列関数を使用したくない – swap
ここでうまくいきますが、おそらく 'sizeof'というバグがあります。 –