PDA

View Full Version : [C] domandina sui puntatori...


nico88desmo
10-01-2007, 17:57
domanda semplice semplice..qual'è la differenza tra queste variabili?

1) int *(*c);
2) int **c;
3) int (*c)[10];

nico88desmo
10-01-2007, 18:52
up...

zakmckraken
10-01-2007, 20:02
Mi sembra sia qc.del genere


int* sono_un_array_di_ptr_a_int[10];
int sono_un_array_di_int[10];

//Array di puntatori
int *(*a);
//Array di puntatori
int **b;
//Puntatore ad array di interi
int (*c)[10];

//Tanto per chiarire
a=sono_un_array_di_ptr_a_int;
b=sono_un_array_di_ptr_a_int;
c=&sono_un_array_di_int;

//E per confondere un po...
sono_un_array_di_ptr_a_int[0]=sono_un_array_di_int;

nico88desmo
10-01-2007, 20:10
grazie a entrambi! mi erano venuti dei dubbi! :p

jappilas
10-01-2007, 23:28
//Puntatore ad array di interi
int (*c)[10];
ehm, questo non è un array di dieci puntatori ad altrettanti int ? ma prob sono io arrugginito :stordita:

//E per confondere un po...
sono_un_array_di_ptr_a_int[0]=sono_un_array_di_int;

//e questo? :D
sono_un_array_di_array_di_int[0]=sono_un_punt_a_int;

andbin
11-01-2007, 09:46
1) int *(*c);
2) int **c;Sono praticamente uguali (le parentesi non cambiano in questo caso nulla), "un puntatore ad un puntatore ad int".
Ecco un esempio di utilizzo:
int **c;

int val = 10;
int *pval = &val;

c = &pval;

printf ("%d\n", **c); /* stampa 10 */

3) int (*c)[10];È un "puntatore ad un array di 10 int".
Ecco un esempio di utilizzo:
int (*c)[10];

int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

c = &arr;

printf ("%d\n", (*c)[2]); /* stampa 3 */

trallallero
11-01-2007, 12:32
e questo ? :ciapet:
char *(pippo::*p)(int *)

trallallero
11-01-2007, 12:59
ma i :: in C si possono usare?? :D
'azz! é vero :doh:
vabbé dai C, C++ cosa cambia ? :D

andbin
11-01-2007, 13:01
char *(pippo::*p)(int *)In teoria dovrebbe essere un "puntatore ad una funzione membro della classe 'pippo' che prende in input un puntatore a int e restituisce un puntatore a char".

Nella pratica non so se è corretto/valido ... non credo :stordita: ... mai viste cose del genere. :eek:

trallallero
11-01-2007, 13:10
In teoria dovrebbe essere un "puntatore ad una funzione membro della classe 'pippo' che prende in input un puntatore a int e restituisce un puntatore a char".

Nella pratica non so se è corretto/valido ... non credo :stordita: ... mai viste cose del genere. :eek:
penso sia corretto, dovrebbe essere come dici tu un puntatore a metodo.
visto che ci siamo, ho trovato su internet questo:
int (Pointer::*pmf)(int) = &Pointer::Work;
ma chiedo (a chi ne sa di piú):
in C basta il nome della funzione per il suo indirizzo, perché in questo caso ci mette la & ? :mbe: