Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-10-2003, 17:50   #1
Mezzetti0903
Senior Member
 
Iscritto dal: Nov 2000
Messaggi: 279
Liste in c++

Beh...dopo un bel po' di astinenza mi sono ridato al C++ e in particolare sto "realizzando" una lista copiandola paro paro da un libro.

Codice:
#include <stdlib.h>

typedef int tipoelemento;
struct cella {
	tipoelemento elemento;
	struct cella *precedente,*successivo;
};
typedef struct cella *lista,*posizione;

void CreaLista(lista *L) {
	(*L)=(lista)malloc(sizeof(struct cella));
	(*(*L)).precedente = *L;
	(*(*L)).successivo = *L;
}
bene.... e fin qui tutto mi torna....ma la domanda è... se io volessi creare questa benedetta lista nel Main richiamando la funzione CreaLista che dovrei metterci(come parametro intendo)??
Mi fate un esempio??

Grazie...infinite....
__________________
In un arco di tempo abbastanza lungo l'indice di sopravvivenza di ognuno scende a zero

Ultima modifica di Mezzetti0903 : 25-10-2003 alle 18:01.
Mezzetti0903 è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2003, 20:52   #2
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
main{
.
.
.
.
lista xyz;
CreaLista(xyz);
.
}

io sto facenndo il c ma vedo che almeno questo è uguale al c++.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2003, 21:06   #3
Mezzetti0903
Senior Member
 
Iscritto dal: Nov 2000
Messaggi: 279
!

Ti dirò in realtà avevo provato

lista *li;
CreaLista(li);

perchè in fondo quella funzione accetta un puntatore ad un puntatore....quindi così dovrebbe essere corretto.

in realtà in run-time mi da un bel "Access Violation" nella riga
"(*L)=(lista)malloc(sizeof(struct cella));"




ho provato anche come dici te ma
lista li;
CreaLista(li) da errore in compilazione "error C2664: 'CreaLista' : cannot convert parameter 1 from 'struct cella *' to 'struct cella **"



Come risolvo l'Access Violation?? oppure...dove sbaglio??
__________________
In un arco di tempo abbastanza lungo l'indice di sopravvivenza di ognuno scende a zero
Mezzetti0903 è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2003, 21:11   #4
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
nell'intestazione di CreaLista, nel parametro io non metterei un puntatore a un "tipo" lista ma seplicemente un elemento di "tipo" lista visto che comunque ogni elemento di "tipo" lista è (per definizione nella struct cella) un puntatore ad una struttura cella.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2003, 21:14   #5
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
insomma modificherei CreaLista in questo modo:
Codice:
void CreaLista(lista L) {
	L=(lista)malloc(sizeof(struct cella));
	L->precedente = NULL;
	L->successivo = NULL;
}
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2003, 21:17   #6
Mezzetti0903
Senior Member
 
Iscritto dal: Nov 2000
Messaggi: 279
!

Beh....ora funziona....grazie!

ma perchè prima c'era quell'access violation??
non gli vanno giù i puntatori di puntatori??

grazie ancora!
__________________
In un arco di tempo abbastanza lungo l'indice di sopravvivenza di ognuno scende a zero
Mezzetti0903 è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2003, 03:05   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Codice:
void CreaLista(lista L) {
	L=(lista)malloc(sizeof(struct cella));
	L->precedente = NULL;
	L->successivo = NULL;
}
Questo non va bene...
Metti che venga allocato un solo elemento:

lista li = NULL;
CreaLista(li);

li ha ancora valore NULL anche dopo la chiamata a CreaLista!!!

Era giusto il codice iniziale:
Codice:
typedef int tipoelemento;
struct cella {
	tipoelemento elemento;
	struct cella *precedente,*successivo;
};
typedef struct cella *lista,*posizione;

void CreaLista(lista *L) {
	(*L)=(lista)malloc(sizeof(struct cella));
	(*(*L)).precedente = *L;
	(*(*L)).successivo = *L;
}

lista li;
CreaLista(&li);
In questo modo passi l'indirizzo di li a CreaLista...

L è l'indirizzo di li...*L è li... Quindi andando a modificare *L si va a modificare li !!!

Con il codice postato prima invece il valore iniziale di li veniva copiato in L, ma il valore ottenuto con malloc veniva copiato in L che aveva lo stesso valore di li, ma non vai a modificare li...

Comunque questo non è C++...è puro C !!!

In C++ molte cose si potrebbero fare in maniera diversa... L'uso di new e il passaggio dei dati per riferimento avrebbe dato una mano !!!

In C++:
Codice:
typedef int tipoelemento;
struct cella {
	tipoelemento elemento;
	cella *precedente,*successivo;
};
typedef cella *lista,*posizione;

void CreaLista(lista &L) {
	L = new cella;
	(*L).precedente = L;
	(*L).successivo = L;
}

lista li;
CreaLista(li);
Questo ovviamente sempre rispettando la struttura iniziale...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2003, 14:10   #8
Mezzetti0903
Senior Member
 
Iscritto dal: Nov 2000
Messaggi: 279
!

Grazie cionci.

Sono passato alla versione in C++ che mi piace di più, è più pulita!

però....

Codice:
#include <stdlib.h>

typedef int tipoelemento;
struct cella {
	tipoelemento elemento;
	cella *precedente,*successivo;
};
typedef cella *lista,*posizione;

void CreaLista(lista &L) {
	L = new cella;
	(*L).precedente = L;
	(*L).successivo = L;
	
}


char ListaVuota(lista L) {
	return ((*L).successivo==L);
}
posizione PrimoLista(lista L) {
	return ( (*L).successivo);
}
posizione UltimoLista(lista L) {
	return ( (*L).precedente);
}
posizione SuccLista(posizione p){
	return ((*p).successivo);
}
posizione PrecLista(posizione p){
	return ( (*p).precedente);
}
char FineLista(posizione p,lista L) {
	return (p==L);
}
tipoelemento LeggiLista(posizione p, lista L){
	return( (*p).elemento);
}
void ScriviLista(tipoelemento a, posizione p, lista L) {
	(*p).elemento=a;
}
void InsLista (tipoelemento a, posizione &p, lista L) {
	struct cella *temp;
	temp=(struct cella *)malloc(sizeof(struct cella));
	(*temp).precedente=(*p).precedente;
	(*temp).successivo=p;
	(*((*temp).precedente)).successivo=temp;
	(*p).precedente=temp;
	(*temp).elemento=a;
	p=temp;
}


void main() {
	lista li;
	CreaLista(li);
	posizione po=PrimoLista(li);
	InsLista(10,po,li);
}
beh...così funziona ma se volessi riassumere
Codice:
	posizione po=PrimoLista(li);
	InsLista(10,po,li);
in un qualcosa tipo
InsLista(10,PrimoLista(li),li);

come posso fare?? lo posso fare?? così non funziona...

sì...è vero...scusate ... sono un po' niubbo...ma migliorerò GIURO!!
__________________
In un arco di tempo abbastanza lungo l'indice di sopravvivenza di ognuno scende a zero
Mezzetti0903 è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2003, 16:33   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Perchè hai passato per riferimento p: posizione &p
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
Invia il tuo nome a 1,5 milioni di chilo...
Apple MacBook Neo 13'' con chip A18 Pro ...
Insieme a Leica SL3-P presentate le otti...
La Cina svilupperà anche il razzo...
Rocket Lab e la missione Victus Haze per...
Starship: Ship 40 ha eseguito uno static...
I nuovi Samsung Galaxy Watch 9 si mostra...
Einsten aveva ragione, di nuovo: captate...
Top 10 offerte Amazon: 5 sono partite qu...
AI Conf 2026: l'intelligenza artificiale...
Samsung Galaxy S26 scende a 711,49€: un ...
Dopo il maxi blackout, la Spagna cambia ...
Costa meno di un MacBook e fa molto di p...
Ecco tutti i robot aspirapolvere rimasti...
Più partite da seguire in contemporanea?...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:58.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v