C++ nyelvben hogy tudok sima eljárásokat készíteni?
Konkrétan arra gondolok, hogy ugye a függvény az egy értéket ad vissza, viszont nekem nem arra lenne szükségem, hanem hogy a bemeneti paramétereket cím szerint vegye át, és mondjuk pl fölcserélje őket.
Ezt hogy lehetne megoldani?
Eljárás C-ben nem létezik, azt is függvénynek hívják.
A visszatérési érték lehet void, azaz üres. Pl.:
void blablabla(char* s)
{
if(s) puts(s); else return;
puts("vége");
}
Ebben az esetben a return szó után nem írsz semmit, ha vissza akarsz térni a függvényből. A végéről meg el is hagyható.
C-ben nincs változó paraméter, az értékeket pointereken keresztül tudod változtatni úgy, hogy átírod a változó memóriaterületét. Példa:
//... valahol a főprogramban
int i;
i = 2;
dupla(&i);
printf("%d\n", i);
//... azt fogja kiírni, hogy 4
Itt van a függvény:
void dupla(int *a)
{
(*a) = 2 * (*a);
}
A (*a) mindig legyen zárójelezve az ún. mellékhatások elkerülése érdekében.
Ahha, azthiszem kezdem kapisgálni :D
Köszönöm a válaszokat!
Én azt hiszem, hogy ez egy kissé túl van bonyolítva. Lehet, hogy C-ben tényleg ennyire macerás, de a kérdés a C++-ra vonatkozott. Itt van egy megoldás minimális mutatóhasználattal:
#include <iostream>
using namespace std;
void csere(int &x, int &y){
int z;
z=x; x=y; y=z;
}
void dupla(int &k){ //Ez felel meg a Pascal "eljárásának"
k*=2;
}
int dupla2(int &n){ //Ez a klasszikus függvény
return 2*n;
}
main(){
int a,b,c;
cout << "a=? ";
cin >> a;
cout << "b=? ",
cin >> b;
csere(a,b);
cout << "a=" << a << ", b=" << b << endl;
dupla(a);
cout << "a duplája: " << a << endl;
cout << "Ennek is a duplája: " << dupla2(a) << endl;
fflush(stdin);
getchar();
}
A legegyszerűbb igazából a beépített swap (felcserélni) függvény használata, az pont ezt csinálja: cím szerint átvesz két változót, és kicseréli őket. Az <algorithm> headerben és az std névtérben van, tehát
#include <algorithm>
int main()
{
int a, b;
// ... értékadás a-nak, b-nek
std::swap(a,b);
//megcseréltük őket, voilá.
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!