Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-10-2011, 14:45   #1
biowep
Member
 
L'Avatar di biowep
 
Iscritto dal: Nov 2010
Messaggi: 211
[C] Puntatore matrice

Ciao
Perché non è possibile utilizzare un puntatore (con il doppio indice) negli array bidimensionali?

Mi spiego meglio
Codice:
int arr[5];
//Il nome "arr" non è altro che un puntatore all'elemento arr[0].

int *puntatore=&arr[0]
//arr[0]==puntatore[0]), arr[1]==puntatore[1]) ecc.
La domanda quindi è, perché non posso fare la stessa cosa (creare un puntatore al primo elemento e poi usare il nome del puntatore invece di quello dell'array) con le matrici?

Codice:
int matrice[2][3]={2,3,4,5,6,7};
int *puntatore=&matrice[0][0];
printf("%d", puntatore[2][3]);

//genere un errore: "subscripted value is neither array nor pointer "
biowep è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2011, 15:16   #2
xfra
Junior Member
 
L'Avatar di xfra
 
Iscritto dal: Oct 2011
Messaggi: 3
matrice[0][0] è di per se un puntatore.. prova togliendo la &
xfra è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2011, 15:24   #3
biowep
Member
 
L'Avatar di biowep
 
Iscritto dal: Nov 2010
Messaggi: 211
no, matrice[0][0] non è un puntatore ma direttamente il valore puntato
è matrice che è un puntatore all'elemento matrice[0][0]
matrice==&matrice[0][0]
biowep è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2011, 15:28   #4
Floris
Senior Member
 
L'Avatar di Floris
 
Iscritto dal: Jan 2007
Messaggi: 2267
Codice:
int matrice[2][3]={2,3,4,5,6,7};
int *puntatore=&matrice[0][0];
printf("%d", puntatore[2][3]);

//genere un errore: "subscripted value is neither array nor pointer "
In questo caso puntatore ha tipo int*...non puoi dereferenziarlo due volte come in puntatore[2][3]...al massimo puoi fare puntatore[3]...prova a verificare.
__________________
Concluso con:...

Ultima modifica di Floris : 20-10-2011 alle 15:49.
Floris è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2011, 15:35   #5
biowep
Member
 
L'Avatar di biowep
 
Iscritto dal: Nov 2010
Messaggi: 211
Quote:
Originariamente inviato da Floris Guarda i messaggi
Codice:
int matrice[2][3]={2,3,4,5,6,7};
int *puntatore=&matrice[0][0];
printf("%d", puntatore[2][3]);

//genere un errore: "subscripted value is neither array nor pointer "
In questo caso puntatore ha tipo int*...non puoi dereferenziarlo due volte come in puntatore[2][3]...al massimo puoi fare puntatore[3]...prova a verificare.
allora se quello è di tipo int*
il puntatore matrice di che tipo è?

Ultima modifica di biowep : 20-10-2011 alle 15:38.
biowep è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2011, 15:47   #6
Floris
Senior Member
 
L'Avatar di Floris
 
Iscritto dal: Jan 2007
Messaggi: 2267
Quote:
Originariamente inviato da biowep Guarda i messaggi
allora se quello è di tipo int*
il puntatore matrice di che tipo è?
int**.
*matrice ha tipo int* e punta al primo elemento ([0][0]).
Il primo elemento ([0][0]) della matrice lo puoi quindi ottenere con **matrice.
Il puntatore a [0][1] è invece *matrice+1 e quindi *(*matrice+1) è l'elemento [0][1].
Il puntatore a [1][0] è *(matrice +1) e quindi **(matrice +1) è l'elemento [1][0].

La regola è:
Quote:
Se hai il puntatore T* p, dove T può a sua volta essere un tipo puntatore, allora p+1 è uguale a p+sizeof(T).
Negli esempi precedenti: *matrice+1 equivale a *matrice+sizeof(int) poiché *matrice ha tipo int*, mentre *(matrice+1) equivale a (matrice+sizeof(int)*3) poichè matrice ha tipo int** e le righe hanno 3 elementi. Per questo nel passaggio di matrici come parametri formali devono essere sempre specificate tutte le dimensioni della matrice tranne la prima...affinchè il compilatore possa compiere queste operazioni.
__________________
Concluso con:...

Ultima modifica di Floris : 20-10-2011 alle 15:56.
Floris è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2011, 22:02   #7
biowep
Member
 
L'Avatar di biowep
 
Iscritto dal: Nov 2010
Messaggi: 211
grazie della risposta
biowep è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2011, 10:36   #8
Freaxxx
Senior Member
 
L'Avatar di Freaxxx
 
Iscritto dal: Dec 2006
Messaggi: 3808
vorrei precisare, onde evitare confusione, che i puntatori sono puntatori e gli array restano array, sono 2 cose diverse e separate, la "cosa" che hanno in comune è che entrambi rispondono all'aritmetica dei puntatori.

nel complesso è scorretto dire che una scritta del tipo

Codice:
matrice[i][j]
sia un puntatore a puntatore, perché semplicemente non lo è.
Freaxxx è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2011, 11:57   #9
Floris
Senior Member
 
L'Avatar di Floris
 
Iscritto dal: Jan 2007
Messaggi: 2267
matrice è un puntatore nel senso che la locazione di memoria ad esso assegnata contiene un indirizzo di memoria e non un dato primitivo. matrice[i][j] per ogni i,j, invece è un intero.
__________________
Concluso con:...

Ultima modifica di Floris : 22-10-2011 alle 12:11.
Floris è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Un satellite da 500 kg volerà usa...
4 portatili intorno ai 1000€: molto pi&u...
ChatGPT nel mirino degli attivisti: nasc...
Addio a Hideki Sato: il 'padre dell'hard...
OpenClaw, il fondatore Peter Steinberger...
ECOVACS DEEBOT MINI a 198€ solo fino a m...
2 portatili tuttofare a prezzo giusto: C...
Fincantieri e Generative Bionics svilupp...
Meta lavora a un sistema di riconoscimen...
Il mercato smartphone potrebbe registrar...
Apple punterà sull'architettura c...
NASA Curiosity: i processi non biologici...
Sega conferma l'arrivo di tanti nuovi gi...
La serie POCO X8 è pronta al debu...
Apple conferma che l'arrivo della 'nuova...
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: 10:06.


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