-2
これは私のコードの一部です:なぜreallocの後でも配列の長さが同じですか?
array = (int *) malloc(5*sizeof(int));
それが初期化され、いくつかの値を持っており、私はより多くのクリアランスのために、ここで、このステップをスキップしています。
memmove(array, array + 1, 4*sizeof(int));
array = realloc(array, 4*sizeof(int));
ここで達成したいのは、配列の最初のメンバーを削除し、配列全体を1つ左に移動することです。
strlen(array);
が、私はそれはreallocのように思える値5を取得し、私も後にあるべき配列の5番目の要素を、印刷しようとするので、正常に動作しません:私は使用して、配列の長さをチェックしてみてくださいそれでもとき配列範囲からrealloc、それは以前に与えた値を出力します。どのように可能ですか?
誰かが私が間違っている箇所を教えてもらえますか?何が欠けていますか?
1)ポインタは配列ではありません。 2)Cには明確な文字列型がありません。 3)あなたのCの本は、一般的に 'strlen'とCの文字列について何を言っていますか?簡単な検索で何が見つかりましたか? – Olaf
'int'の配列に見えるものに' strlen'を適用しているのはなぜですか?この場合、 'strlen'は何をすると思いますか?そして、コンパイラは 'strlen(配列)'式について何を教えてくれましたか? – AnT