我是C的新手。我有一个简单的程序,该程序具有new()函数和delete()函数。而且由于我不知道添加的元素数量,因此决定为每个新元素在堆上动态分配内存。这是我的问题,一旦函数从堆栈中弹出,如果它是本地的,指向新分配的内存的指针就会丢失。我需要未知数量的全局指针。我可以这样做吗?
我不能使用外部文件或结构。
int main ()
{
login ();
choosetask; //functions are called from within this function upon user input
return 0;
}
char* new ()
{
char name [];
char address [];
char *ptr;
printf ("enter name");
scanf ("%s", &name);
printf ("enter address", address);
scanf ("%s", &address);
ptr = (char*) calloc (100, sizeof(char));
*ptr = name;
*(ptr+50) = address;
return ptr;
}
动态地在调用者中分配一个指针数组。您可以根据需要使用realloc()
调整大小。
#include <stdio.h>
#include <stdlib.h>
struct a {
char name[20];
char address[20];
};
char* new (void)
{
struct a *ptr = calloc (1, sizeof(struct a));
printf ("enter name");
scanf ("%s", ptr->name);
printf ("enter address");
scanf ("%s", ptr->address);
ptr = (char*) calloc (100, sizeof(char));
return ptr;
}
int main (void)
{
struct a **p_a = malloc (sizeof (struct a*) * 10);
p_a[0] = new();
p_a[1] = new();
p_a[2] = new();
p_a[3] = new();
....
// If the amount of pointers in the array isn´t enough allocate
// more memory for more pointers.
realloc(p_a, sizeof (struct a) * 20);
p_a[10] = new();
p_a[11] = new();
p_a[12] = new();
}