C 动态内存分配、重新分配和计算每次输入后的总和
我有点被这个练习卡住了好几个小时 如您所见,获取一个数字,动态分配一个内存,如果该数字为负数,则减小其大小,并在每次输入后计算总和 我的代码是这样的:C 动态内存分配、重新分配和计算每次输入后的总和,c,C,我有点被这个练习卡住了好几个小时 如您所见,获取一个数字,动态分配一个内存,如果该数字为负数,则减小其大小,并在每次输入后计算总和 我的代码是这样的: #include <stdio.h> #include <stdlib.h> void main() { int number; int count = 1; int sum = 0; int *ap; printf("Input Value = "); scanf_s(
#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);
}
#包括
#包括
void main()
{
整数;
整数计数=1;
整数和=0;
int*ap;
printf(“输入值=”);
扫描单位(“%d”和编号);
ap=(int*)malloc(sizeof(int)*计数);
*ap=数量;
总和+=*ap;
printf(“sum=%d\n”,sum);/*获取第一个值*/
对于(;;)
{
printf(“输入值=”);
扫描单位(“%d”和编号);
如果(数字<0)
{
计数--;/*减小大小*/
ap=(int*)realloc(ap,sizeof(int)*计数);
对于(int i=0;i而言,代码的主要问题在于-
for(int i=0; i<sizeof(ap)/sizeof(ap[0]); i++)
用于(int i=0;iPerhaps调试器可能会指出您的错误。您应该将问题缩小到程序中需要帮助的特定部分,以便其他人可以从中受益。ap
是一个指针,显然是计算机上的4个字节。更改其目标内容对指针大小没有影响。sizeof(ap)
这不起作用。ap
是一个poiner而不是数组。sizeof
将始终返回一个常量值。