私はこの演習で何時間も立ち往生していません。動的メモリ割り当て、各入力後の合計の再割り当てと計算
あなたは、参照番号を取得し、動的にメモリを割り当て、その数はマイナスであれば、それのサイズを小さくし、各入力後に合計を計算することができたよう。
私のコードは次のようになります:メモリの割り当てが正常に動作していない
#include <stdio.h>
#include <stdlib.h>
void main()
{
int number;
int count = 1;
int sum = 0;
int *ap;
printf("Input Value = ");
scanf_s("%d", &number);
ap = (int*)malloc(sizeof(int)*count);
*ap = number;
sum += *ap;
printf("sum = %d\n", sum); /*getting the first value*/
for(; ;)
{
printf("Input Value = ");
scanf_s("%d", &number);
if (number < 0)
{
count--; /*reducing the size*/
ap = (int*)realloc(ap, sizeof(int)*count);
for(int i=0; i<sizeof(ap)/sizeof(ap[0]); i++)
{
sum+=*ap;
}
printf("sum = %d\n", sum);
}
else
{
count++; /*increasing the size*/
ap = (int*)realloc(ap, sizeof(int)*count);
*(ap+(count-1)) = number;
for(int i=0; i<sizeof(ap)/sizeof(ap[0]); i++)
{
sum+=*ap;
}
printf("sum = %d\n", sum);
}
}
free(ap);
}
私ははsizeof(AP)をプリントアウトしたときに、それは常に4、いない4、8、12を印刷するので、私は、仮定します..
誰かが私の間違いを指摘してくれることを願っています!ありがとうございました。
おそらく、デバッガが間違いを指摘する可能性があります。 – zerkms
https://stackoverflow.com/help/how-to-ask あなたの質問は、他の人が答えを得ることができるように、助けが必要なプログラムの特定の部分に絞ってください。 –
'ap'はあなたのコンピュータ上の明らかに4バイトのポインタです。ターゲットの内容を変更しても、ポインタのサイズには影響しません。 –