关于C语言realloc的问题

黄梅罗 2014-11-17 08:20:03
#define STACKSIZE sizeof(int)
int main()
{
int a,b,num=0;
int *result = (int*)malloc(sizeof(int));
scanf("%d %d",&a,&b);
while(a!=0||b!=0){
*result = a+b;
scanf("%d %d",&a,&b);
num++;
result=(int*)realloc(result,(sizeof(int)+STACKSIZE));
result++;
}
while(num!=0)
{
printf("%d\n",*(result-num));
num--;
}
我想完成的功能是从控制台输入两个数的相加,要求是输入到0 0的时候才会显示出之前输入的所有组数的和。如下:
input:
9 2
2 5
0 0
output:
11
7
但是在result=(int*)realloc(result,(sizeof(int)+STACKSIZE))这个地方总是错误,我是想输入一组值分配一个空间的。求大神解答。
...全文
199 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
QIUSQJF 2014-11-18
  • 打赏
  • 举报
回复
引用 2 楼 zhangyuemessi 的回复:
搞懂了,不过C的内存指针问题有点复杂,我想问一下,为什么我先用malloc分配一部分内存,再用realloc追加内存就不行呢?记得大学教材里的代码结构就是如此。
不是不可以,是你自己的在result++的时候把指针搞乱了……还有用realloc的时候最好进行错误判断,可能会分配失败……
黄梅罗 2014-11-18
  • 打赏
  • 举报
回复
搞懂了,不过C的内存指针问题有点复杂,我想问一下,为什么我先用malloc分配一部分内存,再用realloc追加内存就不行呢?记得大学教材里的代码结构就是如此。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧