2016-04-18 6 views
-2

Gibt es einen Unterschied von deklarieren int * p; oder int ** p; Ich weiß, ** p wird für einen Zeiger auf einen Zeiger verwendet, aber * p kann auch einem Zeiger zugewiesen werden, so dass meine Frage ein Unterschied zwischen ihnen ist?Zeiger auf einen Zeiger Syntaxunterschiede zwischen int * p und int ** p C++

void main() 
{ 

    int numDays; 
    double sum = 0; 
    double avg; 
    cout << "Enter the number of days of sales"; 
    cin >> numDays; 
    double *Sales = new double[numDays]; 
    double *p = Sales; 
    for (int i = 0; i < numDays; i++) 
    { 
     cout << "enter how much you sold for day " << i << endl; 
     cin >> *p; 
     sum = sum + *p; 
     p++; 


    } 


    avg = sum/(numDays); 
    cout << "the sum is" << sum << endl; 
    cout << "the avg is" << avg << endl; 

    delete[]Sales; 

, warum wir nicht verwenden pointertopointers für ein dynamisches Array wie dies an dieser Stelle

double *Sales = new double[numDays]; 
     double *p = Sales; 

oder können Sie?

+1

Ja. Ein reguläres 'int *' verweist auf eine Reihe von Ints im Speicher. Ein 'int **' zeigt auf einen Zeiger auf eine Reihe von Ints im Speicher ... –

+2

Mögliche Duplikate von [Warum Doppelzeiger verwenden? oder Warum Zeiger auf Zeiger verwenden?] (http://stackoverflow.com/questions/5580761/why-use-double-pointer-or-why-use-pointers-to-pointer) – jtbandes

+0

@MillieSmith Eigentlich ein 'int ** 'zeigt auf * eine Anzahl * von Zeigern, wobei jeder auf eine bestimmte Anzahl von 'Ints' zeigt. –

Antwort

0

Sie sind verschiedene Arten. Eine Ebene der Indirektion über einem int, vs zwei Ebenen.

0

ich weiß ** p für einen Zeiger auf einen Zeiger verwendet wird

Richtig.

aber * p kann auch auf einen

aber nicht auf einen Zeiger auf einen Zeiger Zeiger zugewiesen werden.

so meine Frage gibt es einen Unterschied zwischen ihnen?

Ja.

0
int * ptr 

Zeiger-> Wert

int ** ptr 

Zeiger-> Zeiger-> Wert

Verwandte Themen