Gast
2013-11-20, 00:23:39
int** testArray = new int*[2];
int* int1 = new int(1);
testArray[0] = int1;
testArray[1] = new int(2);
std::cout << **testArray << std::endl; // 1
std::cout << *testArray[0] << std::endl; // 1
std::cout << int1 << std::endl; // pointer auf 1
std::cout << *testArray << std::endl; // pointer auf 1
std::cout << testArray[0] << std::endl; // pointer auf 1
std::cout << &int1 << std::endl; // adresse des pointers auf 1
std::cout << &testArray[0] << std::endl; // weshalb ist dies nicht auch die adresse des pointers auf 1?
std::cout << testArray << std::endl; // weshalb ist dies nicht auch die adresse des pointers auf 1?
std::cout << &testArray << std::endl; // adresse des arrays? weshalb nicht adresse des pointers auf das erste element?
std::cout << &(&testArray) << std::endl; // weshalb funktioniert dies nicht?
Ergebnis:
1
1
00A2B800
00A2B800
00A2B800
0078F7F8
00A298F8
00A298F8
0078F804
Die Fragen stehen eigentlich schon als Kommentar im Code.
1. weshalb liefert '&testArray[0]' und 'testArray' nicht das gleiche Ergebnis wie '&int1'?
2. In meinem Referenzbuch steht, dass '&testArray' die Adresse des Arrays ergibt. Nehm ich zu Kenntnis, aber ich finde es ist unlogisch, da 'testArray' ja eigentlich der Pointer auf das erste Element ist, wenn das Array nicht aus Pointern besteht. Deshalb müsste es für mich die Adresse des ersten Pointers sein.
3. Weshalb funktioniert '&(&testArray)' nicht? Meiner Logik nach müsste es die Adresse des ersten Pointers im Array sein.
Aber es scheint, als sei meine Logik reichlich unlogisch...
int* int1 = new int(1);
testArray[0] = int1;
testArray[1] = new int(2);
std::cout << **testArray << std::endl; // 1
std::cout << *testArray[0] << std::endl; // 1
std::cout << int1 << std::endl; // pointer auf 1
std::cout << *testArray << std::endl; // pointer auf 1
std::cout << testArray[0] << std::endl; // pointer auf 1
std::cout << &int1 << std::endl; // adresse des pointers auf 1
std::cout << &testArray[0] << std::endl; // weshalb ist dies nicht auch die adresse des pointers auf 1?
std::cout << testArray << std::endl; // weshalb ist dies nicht auch die adresse des pointers auf 1?
std::cout << &testArray << std::endl; // adresse des arrays? weshalb nicht adresse des pointers auf das erste element?
std::cout << &(&testArray) << std::endl; // weshalb funktioniert dies nicht?
Ergebnis:
1
1
00A2B800
00A2B800
00A2B800
0078F7F8
00A298F8
00A298F8
0078F804
Die Fragen stehen eigentlich schon als Kommentar im Code.
1. weshalb liefert '&testArray[0]' und 'testArray' nicht das gleiche Ergebnis wie '&int1'?
2. In meinem Referenzbuch steht, dass '&testArray' die Adresse des Arrays ergibt. Nehm ich zu Kenntnis, aber ich finde es ist unlogisch, da 'testArray' ja eigentlich der Pointer auf das erste Element ist, wenn das Array nicht aus Pointern besteht. Deshalb müsste es für mich die Adresse des ersten Pointers sein.
3. Weshalb funktioniert '&(&testArray)' nicht? Meiner Logik nach müsste es die Adresse des ersten Pointers im Array sein.
Aber es scheint, als sei meine Logik reichlich unlogisch...