Как использовать callo c для инициализации структуры - PullRequest
0 голосов
/ 18 июня 2020

У меня есть структура

struct Person
{
    char name[50];
    int citNo;
    float salary;
};

Теперь я делаю этот код:

struct Person* p = malloc (sizeof(struct Person));
memset (p,0x00,sizeof(struct Person));

теперь я хочу преобразовать его в callo c (чистый код), как я могу сделать что?

struct Person* p = calloc(sizeof(struct Person) ,1); 

А может поставить 1 это не правильно? какой путь правильный?

1 Ответ

0 голосов
/ 18 июня 2020

callo c () описание из man7

 #include <stdlib.h>
 void *calloc(size_t nelem, size_t elsize);

Функция calloc() выделяет неиспользуемое пространство для массива nelem элементов, каждый из которых размер в байтах elsize. Пространство должно быть инициализировано для всех bits 0. Порядок и непрерывность памяти, выделенной последовательными вызовами calloc(), не определены. Указатель возвращается, если выделение ...

Я рекомендую вам продолжить чтение по ссылке man7_callo c.

теперь, после прочтения описания выше , вызов calloc кажется мне простым: в вашем случае мы выделяем массив из одного struct person

struct Person* p = NULL;
struct Person* p = calloc(1, sizeof(struct Person)); 

, вы должны проверить возвращаемое значение calloc (если callo c успешно выделил, как mallo c):

if(p == NULL){
  puts("calloc failed");
  ...
  ...
}
...