嗨,我有一个C编程问题.我想知道两者之间的差异,以及一个对其他人有用的地方吗?

aks*_*aks 1 c

我有一个C编程问题.

我想知道两者之间的差异,以及一个对其他人有用的地方吗?

假设我有一个名为employee的结构,如下所示:

struct emp{
   char first_name[10];
   char last_name[10];
   char key[10];
};
Run Code Online (Sandbox Code Playgroud)

现在,我想存储员工记录表,然后我应该使用哪种方法:

  1. struct emp e1[100]; // Or
  2. struct emp * e1[100];

我知道这两个不一样,但是想知道第二个声明会引起兴趣并且更有利于使用的用例.

有人可以澄清吗?

Mar*_*tos 7

第二个是指向 struct emp 的指针数组,这意味着你必须在堆上分配每个元素.优点是你只需为你实际拥有的emp数量分配足够的内存,但缺点是你必须管理每个emp的生命周期.

在第一种形式中,100个emps存储在数组本身中,因此它们不需要单独分配.但是这个数组占据了所有100个emps的足够空间,即使你只有10个emps.