Gambas France BETA


Pas de compte ? Incription

[résolu]Pointer in gambas?

12
AuteurMessages
jockerfox#1 Posté le 6/2/2012 à 22:47:46
Hi ti all.
I have this example in C:

void swap(int *a, int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}

main()
{
int a=10,b=20;
swap(&a,&b);
}


Can you translate to gambas3 code, please? This is an example to my real function, obviously !
Tks.
spheris#2 Posté le 7/2/2012 à 07:08:58
Perhaps this :

1
2
3
4
5
6
7
8
9
10
11
PRIVATE SUB myswap(a AS INTEGER, b AS INTEGER)
DIM mytemp AS INTEGER
mytemp = mytemp * a
mytemp * a = mytemp * b
mytemp * b = mytemp
END

PUBLIC SUB main()
DIM a AS INTEGER = 10, b AS INTEGER = 20
myswap(a, b)
END

;)
jeanyvon#3 Posté le 7/2/2012 à 07:25:28
Gambas? Ma! Et gustoSalut,
Je crois que de faire le travail de ces écoliers n'est pas la bonne solution
En plus il y a des forums en anglais
JY
Vieillir? On peut retarder mais pas y échapper!
Flachy Joe#4 Posté le 7/2/2012 à 09:52:40
Iguane : Il Gambas Uniquement pour Activer ses NEurones@Spheris : ce n'est pas des multiplications mais des opérateurs d'adressage.
*a = valeur contenu à l'adresse a
&a = adresse de stockage de la variable a

http://www.commentcamarche.net/contents/c/cpoint.php3

En fait, il n'y a aucune raison d'utiliser des pointeurs ici. ça pourrait valoir le coup pour échanger des variables de grande dimension mais là, échanger les valeurs (int) ou les adresses (long) revient exactement au même.
;) Flachy Joe ;)
Prokopy#5 Posté le 7/2/2012 à 11:39:25
Kinder Pingui
Hi ti all.
I have this example in C:

void swap(int *a, int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}

main()
{
int a=10,b=20;
swap(&a,&b);
}


Can you translate to gambas3 code, please? This is an example to my real function, obviously !
Tks.


Hi jockerfox,

If you want to pass arguments by reference (like pointers in C), you can use the ByRef keyword :

1
2
3
4
5
6
7
8
9
10
11
PUBLIC SUB MySwap(BYREF a AS INTEGER, BYREF b AS INTEGER)
DIM tmp AS INTEGER
tmp = a
a = b
b = tmp
END

PUBLIC SUB Main()
DIM a AS INTEGER = 10, b AS INTEGER = 20
MySwap(BYREF a, BYREF b)
END


Note that if arguments are objects, they're automatically passed by reference. You don't have to use the ByRef keyword in this case. ;)

En fait, il n'y a aucune raison d'utiliser des pointeurs ici. ça pourrait valoir le coup pour échanger des variables de grande dimension mais là, échanger les valeurs (int) ou les adresses (long) revient exactement au même.


Ce n'est pas la vraie fonction, c'est juste un exemple d'utilisation des pointeurs. ;)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
spheris#6 Posté le 7/2/2012 à 11:49:22
Moi pas comprendre ...???...

A quoi sert ce code :

1
2
3
tmp = a
a = b
b = tmp

-------------------
1
tmp =a =b
ne serait-il pas plus simple et judicieux ?

?

;)
Prokopy#7 Posté le 7/2/2012 à 11:50:30
Kinder Pingui
Moi pas comprendre ...???...

A quoi sert ce code :

1
2
3
tmp = a
a = b
b = tmp

-------------------
1
tmp =a =b
ne serait-il pas plus judicieux ?

?

;)


Si tu fais ça, ça mettra dans la variable temp une valeur boléenne représentant la condition "si a égal b". ;)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
Flachy Joe#8 Posté le 7/2/2012 à 11:52:04
Iguane : Il Gambas Uniquement pour Activer ses NEuronesEn plus je raconte des conneries, puisque la fonction peut pas renvoyer 2 valeurs il faut bien des pointeurs, ou un tableau, ce qui revient au même.
;) Flachy Joe ;)
jockerfox#9 Posté le 7/2/2012 à 15:37:52
@Kinder Pingui
Hi and thank for you replay. The magic keyword was "byRef".
Infact I used "varRef" keyword... a little difference.
Obviously, the swap routine was a simple code to learn how write my real code.
NOW WORK ! Thank again Kinder Pingui ! Happy Days.

So, jeanyvon, you can see I do not ask write code to me, but I learn from this simple code example. About English forum, I do not found my solution, so I decided write here because I hoped there was someone know well Gambas code!
Excuse me because I do not speak franch, but I am happy to know there are people can know well gambas language and do not put the pointer to trash! They are very very very useful.

Thank again to all and excuse me to have disturbed someone.
Flachy Joe#10 Posté le 7/2/2012 à 15:41:31
Iguane : Il Gambas Uniquement pour Activer ses NEuronesYou're welcome. ;-)
;) Flachy Joe ;)
jeanyvon#11 Posté le 7/2/2012 à 16:42:46
Gambas? Ma! Et gustoOui, tu es le bienvenu!
Je voudrais simplement faire remarquer que si nous allons poser une question sur un forum anglais on nous demande d'écrire en anglais avec très peu d'égard et on nous réponds en anglais!
Pourquoi la réciproque ferait-elle grincer des dents?
A+
JY
Vieillir? On peut retarder mais pas y échapper!
manu#12 Posté le 7/2/2012 à 18:51:01
Avec Gambas ca roule !Welcome JokerFox ,

Yes, you are welcome here :) and you can speak in english if you want... ;) Jean Yvon is cool but he have just a little problem with the english language. Don't worry ! :)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
jockerfox#13 Posté le 7/2/2012 à 21:47:36
Ok. Thanks again to all.
I have reported this thread to a Italian Forum, so I hope this forum and Italian forum can work together when is necessary.

I'm also happy to be here ;)
Soon
jeanyvon#14 Posté le 8/2/2012 à 08:19:57
Gambas? Ma! Et gustoBonjour!
Non, Manu tu te trompes je n'en ai pas contre les anglais ou ce qui leur tient lieu de langage. J'en ai contre les maîtres du monde qui nous impose leurs règles et ce croient partout chez eux ("to rules the Words" disent les héros de jeux-vidéo)! Et j'en ai aussi contre les français qui pour se faire valoir ou quelques euros acceptent ce genre de compromission!
Et hop! :pirat: on se retrouve au bistro!
Si ma réponse gêne ou si elle soulève encore des vagues supprime là!
En tout cas je suis content que l'ami "british" ait pu être dépanné!
Tient un proverbe suisse pour la route : "Quand on ne sait pas on ne va pas" :drunken:
bonne journée à tous :twisted:
Vieillir? On peut retarder mais pas y échapper!
spheris#15 Posté le 9/2/2012 à 18:14:06
jockerfox,
This is great if we speak english all the time on this forum, isn't it ?
En tout cas le Jean Yvon malgré les apprioris qu'il a envers "le pas comme lui", il comprend très bien l'anglais.(du moins le Franglais de manu :D )
Une bonne surprise !
:D
12