gpt4 book ai didi

c - 在此代码中使用 realloc - 我的数组大小没有增加

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:57 25 4
gpt4 key购买 nike

<分区>

我使用 C++ 编程已有一段时间,但我只是在学习 C。我正在尝试以下代码试图理解 realloc 的行为这是我的结构

struct foo{
int a;
int b;
};

这就是我使用它的方式。最初我想创建一个大小为 2 的数组。(我设法做到了)。然后我想将同一个数组的大小增加到 3,保留它以前的内容,所以我使用 realloc 。这是我的代码

//Create array of size 2
struct foo* farry = malloc(2 * sizeof(struct foo));
farry[0].a =1;
farry[1].a =2;
for(i=0 ; i<=(sizeof(farry)/sizeof(farry[0])) ; i++)
{
printf("Value %d \n",farry[i].a );
}


printf("-----Increasing the size of the array \n");
//Increase the size
int oldsize = sizeof(farry)/sizeof(farry[0]);
farry = realloc(farry, (oldsize+1) * sizeof(struct foo));
printf("new size is %d \n",sizeof(farry)/sizeof(farry[0]) );
farry[2].a =3;
for(i=0 ; i<=(sizeof(farry)/sizeof(farry[0])) ; i++)
{
printf("Value %d \n",farry[i].a );
}

这是我得到的输出

Value 1 
Value 2
-----Increasing the size of the array
new size is 1
Value 1
Value 2

我期望新尺寸为 3 并打印 1,2,3 但它的新尺寸为 1 为什么会这样?在上述情况下,旧尺寸和新尺寸相同。如果有人能解释我可能遗漏或做错了什么,我将不胜感激

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com