Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
dima6920
0 / 0 / 0
Регистрация: 03.08.2010
Сообщений: 23
1

Написать функцию, которая динамически выделит память для полей в структуре

25.11.2010, 18:37. Просмотров 2354. Ответов 4
Метки нет (Все метки)

Доброго времени Уважаемые Гуру!

Вопрос такой:
Нужно сделать функцию которая динамически выделит память для полей в структуре.
Вот чего я наваял:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
 
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Student
{
    char * name;
    int * height;
    int * age;
    char * address;
}Alex;
 
Student initStudent(char * name,int * height,int * age,char * address)
{
    name=(char *)malloc(20 * sizeof(char));
    height=(int *)malloc(3 * sizeof(int));
    age=(int *)malloc(3 * sizeof(int));
    address=(char *)malloc(20 * sizeof(char));
    return ? ;
}
1).... ?
2)Что должна возвращать функция?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2010, 18:37
Ответы с готовыми решениями:

Как освободить динамически выделенную память в структуре
Заголовочный файл myheader.h struct tagDate { int yy, mm, dd; }; struct tagGoods...

Написать функцию которая будет записывать в файл по убыванию значения в одном из полей
здраствуйте помогите пожалуйста написать функцию которая будет записывать в файл по убыванию...

Написать функцию (процедуру), динамически выделяющую память под массив записей,
кто поможет ??? очень нужно к завтрашнему дню ) Написать функцию (процедуру), динамически...

Обьявить тип записи, выделить память динамически для этой записи и в одно из полей записи стрин
И вывести оценку в поле шоу мэсседж

Необходимо написать php функцию. Динамически генерируются цифры для А и Б от 1 до 2 если А не равняется Б то в
необходимо написать php функцию. динамически генерируются цифры для А и Б от 1 до 2 если А не...

4
accept
4838 / 3260 / 464
Регистрация: 10.12.2008
Сообщений: 10,569
25.11.2010, 22:04 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

это неправильно

C
1
2
3
4
5
6
7
typedef struct _student
{
        char *name;
        int *height;
        int *age;
        char *address;
} Student;
C
1
2
3
4
5
6
7
8
int initStudent(Student *p)
{
    p->name = (char *) malloc(20);
    p->height = (int *) malloc(3 * sizeof(int));
    p->age = (int *) malloc(3 * sizeof(int));
    p->address = (char *) malloc(20);
    return p->name && p->height && p->age && p->address;
}
2
dima6920
0 / 0 / 0
Регистрация: 03.08.2010
Сообщений: 23
26.11.2010, 12:18  [ТС] 3
Ок спасибо ,
Есть еще один вопрос по указателям
Есть код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
 
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct _student
{
        char *name;
        int *height;
        int *age;
        char *address;
}Student;
 
 
int initStudent(Student *p)
{
    p->name = (char *) malloc(20);
    p->height = (int *) malloc(sizeof(int));
    p->age = (int *) malloc(sizeof(int));
    p->address = (char *) malloc(20);
    
    return p->name && p->height && p->age && p->address;
}
 
 
void printStudent ( Student * c )
{
    printf("Name:%s",(c->name));
    printf("Height:%s",(c->height));
    printf("Age:%s",(c->age));
    printf("Address:%s",(c->address));
}
void getValue(Student * c)
{   
    
    c->address = "Paris";
    //c->age = 23;
    //c->height= 188;
    c->name ="dima";
}
 
void main()
{
    
    Student Alex;
    
    initStudent(&Alex);
    
    getValue(&Alex);
    printStudent(&Alex);
    getch();
}
Вопрос :
В функции
C
1
2
3
4
5
6
7
8
void getValue(Student * c)
{   
    
    c->address = "Paris";
    //c->age = 23;
    //c->height= 188;
    c->name ="dima";
}
Как мне дать значение полям age и height??
0
dihlofos
Бродяга
307 / 261 / 56
Регистрация: 27.08.2010
Сообщений: 553
26.11.2010, 12:50 4
dima6920, разыменуйте указатели:
C++
1
*(c->age) = 23;
1
accept
4838 / 3260 / 464
Регистрация: 10.12.2008
Сообщений: 10,569
26.11.2010, 13:58 5
C
1
2
3
4
5
6
7
void printStudent ( Student * c )
{
        printf("Name:%s",(c->name));
        printf("Height:%s",(c->height));
        printf("Age:%s",(c->age));
        printf("Address:%s",(c->address));
}
неправильно (для int %s не используется)
и целочисленные массивы нужно выводить в цикле

C
1
2
3
4
5
6
7
8
void getValue(Student * c)
{       
        
        c->address = "Paris";
        //c->age = 23;
        //c->height= 188;
        c->name ="dima";
}
там выделена память под массивы, если там должны быть массивы, нужно вводить в цикле для каждого массива, если же там не должны быть массивы, а должны быть просто целые значения, то и выделять под них не надо изначально
1
26.11.2010, 13:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2010, 13:58

Напишите функцию, которая выделяет память для двумерной матрицы из целых чисел
Задание 2.1. Создание матрицы Напишите функцию, которая выделяет память для двумерной матрицы из...

Написать функцию, определяющую сумму полей idn для заданного имени (name)
Дан файл структуры name:string; idn:integer; (имя, идентификационный номер). Может быть несколько...

Написать функцию, определяющую сумму полей idn для заданного имени
Дан файл структуры name:string; idn:integer.(имя, идентификационный номер). может быть несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru