Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 23.12.2010, 10:13   #1
katena88
Пользователь
 
Аватар для katena88
 
Регистрация: 25.10.2010
Сообщений: 41
По умолчанию объявление динамического массива

Помогите, пожалуйста, написать функцию, которая бы задавала одномерный динамический массив с любым именем.
Мой код не работает
Код:
char *zag;
	zag = (char *) malloc(sizeof(char) );
Руки программиста должны быть прямые, а извилины кривые, но не наоборот
katena88 вне форума
Старый 23.12.2010, 11:28   #2
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Я понял твой вопрос так.
Код:
void Alloc(char *Array, int Size)
{
 Array = (char*)malloc(Size); // А вообще лучше используй new.
 // Array = new char[Size];
}

Последний раз редактировалось coNsept; 23.12.2010 в 11:30.
coNsept вне форума
Старый 23.12.2010, 12:53   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2coNsept
неверно.
char *Array у тебя локальная переменная, поэтому по возврату из функции адрес свой потеряешь.

надо либо так
Код:
int *create_mass(int len)
{
    int *ret = new int[len]; // ну или int *ret = (int *)malloc(sizeof(int) * len);
    return ret;
}
либо, как хотел ты, но правильно ТАК
Код:
void create_mass(int **mass, int len)
{
    *mass = new int[len];
}
ну а дальше
Код:
int *mass = create_mass(10);

или, если второй способ

int *mass;
create_mass(&mass, 10);
неужто я опять придираюсь
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума
Старый 23.12.2010, 12:57   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
неужто я опять придираюсь
А может Катене нужно не на плюсах?
I'm learning to live...
Stilet вне форума
Старый 23.12.2010, 13:10   #5
katena88
Пользователь
 
Аватар для katena88
 
Регистрация: 25.10.2010
Сообщений: 41
По умолчанию

я плохо знаю язык Си, но у меня не работает((((
Руки программиста должны быть прямые, а извилины кривые, но не наоборот
katena88 вне форума
Старый 23.12.2010, 13:14   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Stilet
Цитата:
А может Катене нужно не на плюсах?
Код:
int *create_mass(int len)
{
    int *ret = new int[len]; // ну или int *ret = (int *)malloc(sizeof(int) * len);
    return ret;
}
а камент на что?


2katena88
что ты плохо знаешь, я заметил. что у тебя не работает? вот пример с созданием, заполнением и выводом дин массива на функциях
Код:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int *create_mass(int len)
{
	int *ret = (int *)malloc(sizeof(int) * len);
	return ret;
}

void free_mass(int *mass)
{
	free(mass);
}

void fill_mass(int *mass, int len)
{
	int i;
	srand((unsigned)time(0));
	for (i = 0; i < len; i++)
		mass[i] = rand() % 100 + 1;
}

void print_mass(int *mass, int len)
{
	int i;
	for (i = 0; i < len; i++)
		printf("%d ", mass[i]);
}

int main()
{
	int len = 10;
	int *mass = create_mass(len);
	fill_mass(mass, len);
	print_mass(mass, len);
	free_mass(mass);
	return 0;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 23.12.2010 в 13:19.
pproger вне форума
Старый 23.12.2010, 13:26   #7
katena88
Пользователь
 
Аватар для katena88
 
Регистрация: 25.10.2010
Сообщений: 41
По умолчанию

теперь программа вылетает(((
Руки программиста должны быть прямые, а извилины кривые, но не наоборот
katena88 вне форума
Старый 23.12.2010, 13:30   #8
kenwood2010
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 97
По умолчанию

вот это попробуй:
Код:
//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>

int main()
{
int **matr;
int cows = 0 /*строка*/, rows = 0 /*столбец*/;
int i = 0, j = 0;


cout<<"Vvedite razmer matrici (stroka, stolbec): ";
cin >> cows;   /*строка*/
cin >> rows;   /*столбец*/

//создание матрицы
matr = new int *[cows];
for(i = 0; i < cows; i++)
 {
   matr[i] = new int [rows];
 }

//Заполнение матрицы и выод ее на экран
cout<<"Matr imeet vid: "<<endl;
randomize();
for(i = 0; i < cows; i++)
 {
  for(j = 0; j < rows; j++)
   {
    matr[i][j] = random(25);
    cout<<matr[i][j]<<" ";
   }
   cout<<endl;
 }

//удаление матрицы
for(int i = 0; i < cows; i++)
{
delete[] matr[i];
}
delete[] matr;
getch();
return 0;
}
kenwood20072@rambler.ru ICQ: 701 302 135. (Программирование на C++, С. Решение задач по физике)

Последний раз редактировалось kenwood2010; 23.12.2010 в 13:59. Причина: лишняя скобка
kenwood2010 вне форума
Старый 23.12.2010, 13:31   #9
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

вы скопировали то, что я выложил, запустили, и она у вас вылетает? не верю

2kenwood2010
разницу между матрицей и массивом чувствуешь? матрицы я ей в другой теме втюхивал
пс. да еще и борландовский код привел. не используют чоткие ребята богомерзкие велосипеды борланда, аля randomize, random. есть стандартизованные функции для этих вещей
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 23.12.2010 в 13:37.
pproger вне форума
Старый 23.12.2010, 13:36   #10
katena88
Пользователь
 
Аватар для katena88
 
Регистрация: 25.10.2010
Сообщений: 41
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
вы скопировали то, что я выложил, запустили, и она у вас вылетает? не верю
правильно не верите, потому что вылетает он из за другой функции, но я думала, что если массив опишу как динамический, то поможет...
не помогло(((
Руки программиста должны быть прямые, а извилины кривые, но не наоборот
katena88 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистка динамического массива JohnnySuperb Общие вопросы Delphi 11 10.12.2010 07:47
очистка динамического массива BattleMage Общие вопросы C/C++ 1 19.09.2009 09:03
Освобождение динамического массива? VintProg Общие вопросы Delphi 15 28.08.2009 10:41
Сохранение динамического массива Horus92 Помощь студентам 3 07.05.2009 12:36
объявление массива Crasty Помощь студентам 7 05.11.2008 17:18