Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 15-04-2006, 13.48.25   #1
karmo
Newbie
 
Registrato: 03-08-2005
Messaggi: 30
karmo promette bene
void *buffer

allora:
ho una funzione strutturata in questo modo:
void* memset( void* buffer, int ch, size_t count );

mentre nel main ho:
char stringa[512];

se faccio
memset((void * const)stringa, '\0', sizeof(stringa));

allora non ho problemi, ma:
memset((void &)stringa, '\0', sizeof(stringa));
invece non va!
il & non è un altro modo di scrivere *const ? cioè un puntatore costante a un variabile di tipo ...

se invece:
memset(&stringa, '\0', sizeof(stringa));
va nuovamente bene! ma non ho dichiarato che è di tipo void come vuole la funzione!
quindi quando la funzione vuole un parametro void* buffer chiede in ingresso un puntatore a una variabile di qualsiasi tipo che specifico io!è giusto dire cosi?
karmo non è collegato   Rispondi citando
Vecchio 24-04-2006, 14.20.28   #2
wilhelm
Hero Member
 
L'avatar di wilhelm
 
Registrato: 30-08-2002
Loc.: Portogruaro (VE) - Roma
Messaggi: 513
wilhelm promette bene
Void* è un puntatore non tipizzato, puoi farlo puntare a qualsiasi tipo di dato.

Non puoi invece compiere alcune operazioni tipiche dei puntatori tipizzati invece.
___________________________________

Fedele a Franz Joseph, l'ultimo Kaiser!!!
wilhelm non è collegato   Rispondi citando
Vecchio 24-04-2006, 15.28.24   #3
boyashi
Senior Member
 
L'avatar di boyashi
 
Registrato: 20-01-2006
Messaggi: 334
boyashi promette bene
l'operatore & viene usato nel passaggio di parametri per riferimento o per passare l'indirizzo fisico stesso della variabile a cui è applicato.

"void &" non va perchè, invece di passare un puntatore al blocco di memoria, cerca di passare il blocco di memoria facendo un passaggio per riferimento. Questa cosa il compilatore te la blocca perchè la funzione accetta un puntatore come 1° parametro ( devi rispettare la definizione della funzione che chiami ).

se vuoi passare il puntatore alla memoria come riferimento devi usare

void*&

nel tuo caso:
memset((void*)&stringa,'\0',512);

ma un'operazione del genere su un puntatore non è necessaria, perchè non devi modificare il puntatore stesso. Questo tipo di passaggio viene di solito usato per variabili definite nella funzione chiamante e che si vogliono modificare in quella chiamata.

Esempio:
Codice:
#include <iostream>
using namespace std;

void test_fun(int& t) {
 t = 10;
}

int main(int argc, _TCHAR* argv[])
{

	int p;
	test_fun(p);
	cout << p; //ora p contiene il valore 10
	return 0;
}
___________________________________

Nel 1969 due Commodore 64 mandarono con successo una navicella sulla Luna.
Nel 2005 è necessario un Pentium 4 a 2Ghz per far funzionare Windows XP.
Boyashi --- Firma

Ultima modifica di boyashi : 24-04-2006 alle ore 16.19.20
boyashi non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
funzione void con una matrice come parametro luca881222 Programmazione 1 04-12-2007 22.11.59
[JAVA] Funzione delle interfacce Downloader Programmazione 6 09-05-2007 13.29.31
[AIUTO] Programma Algoritmi in Java [Si parla di Heap] UltraVegeta Programmazione 5 12-10-2005 18.33.23
[C++] Relazionr di aggregazione atreiu Programmazione 0 16-05-2005 15.27.40
1)RISOLUZIONE PROBLEMA ALGORITMO IN C caralu Programmazione 13 06-10-2004 11.35.40

Orario GMT +2. Ora sono le: 11.57.09.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.