Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Двойной указатель / 6 сообщений из 6, страница 1 из 1
16.12.2004, 13:22
    #32830231
UlanOf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Двойной указатель
Подскажите почему массив не выводиться .....
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void Cozdanie_mas(int **mas,int n,int m);

void main()
{
int **mas,n,m;
Cozdanie_mas(mas,n,m);
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
cout<<mas [j]<<endl;
cout<<"ypa";
}

void Cozdanie_mas(int **mas, int n, int m)
{
cout<<"Enter the size of a array\n";
cin>>n;
cout<<endl<<"Enter the size of a array\n";
cin>>m;
cout<<"\n";
mas=new int *[n];
for (int i=0;i<n;i++)
mas=new int [m];
cout<<"Enter elements of a array\n";
for (i=0;i<n;i++)
for (int j=0;j<m;j++)
cin>> mas[j];

}
...
Рейтинг: 0 / 0
16.12.2004, 13:50
    #32830325
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Двойной указатель
Вы присваиваете адрес локальной переменной mas, который по выходу из Cozdanie_mas теряется - происходит утечка памяти. Чтобы работало то, что Вы задумали измените сигнатуру функции следующим образом:

Код: plaintext
void Cozdanie_mas(int**&mas,int n,int m);
...
Рейтинг: 0 / 0
16.12.2004, 13:50
    #32830327
dwl
dwl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Двойной указатель
1) у тебя ошибка в обращении к элементу массива
2) ошибка в передаче параметров - n и m передаются по значению, а надо по ссылке
3) не освобождаешь выделенную память

Код: plaintext
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.
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

#include "stdafx.h"

using std::cin;
using std::cout;

void Cozdanie_mas(int *mas, int& n, int& m)
{
	cout << "Enter the size of a array\n";
	cin  >> n;
	cout << std::endl << "Enter the size of a array\n";
	cin  >> m;
	cout << "\n";

	mas = new int [n*m];

	cout << "Enter elements of a array\n";
	for (int i= 0 ;i<n;i++)
		for (int j= 0 ;j<m;j++)
			cin >> mas[i*m + j];

}

int _tmain(int argc, _TCHAR* argv[])
{
	int *mas,n,m;

	Cozdanie_mas(mas,n,m);

	for (int i= 0 ;i<n;i++)
		for (int j= 0 ;j<m;j++)
			cout<<mas[i*m + j]<<std::endl;

	cout<<"ypa";

	delete [] mas;
	return  0 ;
}
...
Рейтинг: 0 / 0
16.12.2004, 13:53
    #32830334
dwl
dwl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Двойной указатель
ну и ссылку перед указателем как было в предыдущей мессаге, а еще лучше сделать функцию. А еще лучше перейти на контейнер.
...
Рейтинг: 0 / 0
16.12.2004, 13:59
    #32830355
dwl
dwl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Двойной указатель
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
int* Cozdanie_mas(int& n, int& m)
{
...
	int *mas = new int [n*m];
...
	return mas;
}

int _tmain(int argc, _TCHAR* argv[])
{
	int *mas,n,m;

	mas = Cozdanie_mas(n,m);
...
	delete [] mas;
	return  0 ;
}
...
Рейтинг: 0 / 0
16.12.2004, 14:16
    #32830401
UlanOf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Двойной указатель
Всем спасибо за внимание .... Я тупил передавая по ссылке значение функции ... просто & ставил не туда .... в течении часа .)) Бывает со всеми))
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Двойной указатель / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]