Proces v C-čku - Problem s premenou

C,C++,C#

Moderátori: psichac, Moderátori

PATO555148
Stály člen
Stály člen
Príspevky: 110
Dátum registrácie: 12 Máj 2010, 00:00
Bydlisko: Prešov
Vek: 28

Proces v C-čku - Problem s premenou

Príspevok od používateľa PATO555148 » 28 Feb 2015, 16:31

Zdravím mam jeden problem: Potrebujem vytvorit proces do ktoreho zadavam tie pociatocne hodnotny toto mam ale chcem tam zadat už existujucu premenu a do ktorej sa neskor zapise nejaka hodnota inej premenej z toho procesu.
Priklad:

Kód: Vybrať všetko

void zadanecislo(uint32_t premenna , char *textdisp, uint8_t pamet, const char *zadanytext )
{
	while(pamet==1)
	
	{
		if(stisk_klaves()==16)
		{
			while(stisk_klaves()==16);
			zadci=0;
			pamet++;
		}
		lcd_clrscr();
		lcd_puts(zadanytext);
		ultoa(premenna,textdisp,10);
		lcd_gotoxy(0,2);
		lcd_puts(textdisp);
		_delay_ms(15);
		if(stisk_klaves()==15)
		{
			zadci=0;
			premenna=0;
		}
		if(stisk_klaves()!=255)
		{	if (stisk_klaves()!=16)
			{	if (stisk_klaves()!=15)
				{	docci=stisk_klaves();
					_delay_ms(50);
					zadci=10*zadci+docci;
					premenna=zadci;
					while(stisk_klaves()!=255);
				}
			}
		}
		
	}
ta premenna by mala byt existujuca premena resp jej nazov a neskor by hodnota zadci sa zapisala do tej premennej .
Napr : zadanecislo( inaexistujucapremena, text, 1, " nejaky text")
a do tej inejexistujucejpremeny chem aby sa zapisala hodnota premenna
pozn: premena zadci ma moju chcenu hodnotu .
inaexistujucapremena je deklarovana uplne na zaciatku a je typu unsigned long int
v tomto mojom programe to tak nefunguje ako som pedpokladal, Viete mi s tym pomocť?
Ďakuejm ze odpovede.
0

Používateľov profilový obrázok
awen
Power user
Power user
Príspevky: 609
Dátum registrácie: 11 Feb 2009, 00:00
Bydlisko: Bratislava
Vek: 36

Re: Proces v C-čku - Problem s premenou

Príspevok od používateľa awen » 28 Feb 2015, 17:38

Musis preniest argument funkcie pomocou pointera. Podla tohto musis pochopit:

Kód: Vybrať všetko

#include <stdio.h>

void funkcia(int *premenna)
{
  printf("Premenna vstupujuca do funkcie: %d\n", *premenna);

  // Zmenime hodnotu premennej.
  *premenna = 5;
}

int main(void)
{
  int cislo = 1;
  printf("Cislo pred zavolanim funkcie: %d\n", cislo);
  funkcia(&cislo);
  printf("Cislo po zavolani funkcie:    %d\n", cislo);

  return 0;
}
Vystup:

Kód: Vybrať všetko

Cislo pred zavolanim funkcie: 1
Premenna vstupujuca do funkcie: 1
Cislo po zavolani funkcie:    5
0

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 988
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: Proces v C-čku - Problem s premenou

Príspevok od používateľa budvar10 » 02 Mar 2015, 09:02

Ak chceš uložiť dáta do externej premennej vo funkcii, parameter funkcie musí byť pointer '*' alebo referencia '&' na premennú. Ty tam máš len odovzdanie hodnoty, t.j. vznikne len dočasná lokálna premenná s kópiou dát, ktorá sa zničí ukončením funkcie. Čokoľvek tam zapíšeš, po ukončení funkcie sa stratí.
0

Používateľov profilový obrázok
xmilos
Ultimate člen
Ultimate člen
Príspevky: 3671
Dátum registrácie: 04 Máj 2011, 00:00
Bydlisko: Povazie

Re: Proces v C-čku - Problem s premenou

Príspevok od používateľa xmilos » 02 Mar 2015, 09:24

Jedno z rieseni ( modernych ) je tak ako pisu nadomnou.
Dalsie riesenie, ze premennu zadefinujes ako globalnu, potom bude pristupna vo funkcii bez odovzdania jej hodnoty, adresy ( pointra ).
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok