2D pole, pointery a segfault – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

2D pole, pointery a segfault – C / C++ – Fórum – Programujte.com2D pole, pointery a segfault – C / C++ – Fórum – Programujte.com

 

Maty
~ Anonymní uživatel
93 příspěvků
24. 11. 2013   #1
-
0
-

Zdravím, vůbec neumím s pointerama a potřeboval jsem předat 2D pole do jiné funkce...Mi to spadne a debugger hází segfault.

float Vypocitej(int voda, int min, int max, int ***pole, int N)
{
	if((*pole)[0][i] == min)
			{
				voda2=+(*pole)[4][i];
				if(voda2>voda)
					return min;	
			}
return -1;
}
int main(void)
{
int N,i,voda,min,max,vypocet, **ukazatel;
int pole[5][N-1];
ukazatel=pole;
vypocet=Vypocitej(voda, min, max, &ukazatel, N);
}


samozřejmě tam mám všechny proměnné dosazené přes scanf...

Nahlásit jako SPAM
IP: 46.135.3.–
Martin Kozibrátka0
Stálý člen
24. 11. 2013   #2
-
0
-

Tvůj kód jsem nezkoumal, ale k tvojí otázce třeba takto:

http://stackoverflow.com/questions/8767166/passing-2d-array-to-function

nebo třeba:

template<int T, int E>
void ok(int (*a)[T][E])
{
	std::cout<<T<<"\n"<<E;

};

int main(void)
{
	int i[3][2];
	ok(&i);
}
Nahlásit jako SPAM
IP: 88.83.169.–
Savana.cz - neomezený webhosting za pár kaček :)
Maty
~ Anonymní uživatel
93 příspěvků
24. 11. 2013   #3
-
0
-

#2 Martin Kozibrátka
Je to C a ne CPP...

Nahlásit jako SPAM
IP: 89.176.24.–
Kowalsky950
Stálý člen
24. 11. 2013   #4
-
0
-

Popřemýšlej, jestli by nebylo jednodušší vygenerovat jednorozměrné pole a do druhé proměnné si uložit jak kdyby šířku druhého pole, a takto se skrz pole propočítávat.

#include <iostream>
using namespace std;
void funkce(char **pole)
{
	int a=0;
	while(*pole[a]!='\n')
	{
		cout<< pole[a];
		a++;
	}
}
int main()
{
	char **pole=new char*[3];
	pole[0]=new char[6];
	pole[1]=new char[6];
	pole[2]=new char[1];
	pole[0]="Hello";
	pole[1]="World";
	*pole[2]='\n'; //vkladam char, ne char*
	funkce(pole);
	cin.get();
	return 0;
}

Pokud by si chtěl pouřít vícerozměrné pole, bylo by to složitější. Musel by si mít trojitý ukazatel, kterému dát pole, a do tohoto pole zase napsat další pole.

Nahlásit jako SPAM
IP: 90.176.114.–
Martin Kozibrátka0
Stálý člen
24. 11. 2013   #5
-
0
-

#3 Maty
Odkaz, který jsem poslal, je použitelný pro C

Nahlásit jako SPAM
IP: 88.83.169.–
Savana.cz - neomezený webhosting za pár kaček :)
KIIV
~ Moderátor
+43
God of flame
25. 11. 2013   #6
-
0
-

2D pole odpovida jednorozmernemu pointeru, ktery pak akorat musi vedet, jak je velky jeho "radek"

takze prepoctum se beztak nevyhnes, pokud to chces mit tim stylem

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

Podobná vlákna

2D pole a pointery — založil Maty

Id3lib SEGFAULT — založil Earl Cash

C++ pointery — založil jane32

Pointery — založil inferno-girl

Pointery v C — založil chef06

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý