Pointers

Was gibt das folgende Programm aus?

#include<iostream>
 
int main(){
  
  auto a = new int[5]{9, 4, 1, 2};
  auto p = a+3;
 
  std::cout << *p;
  
  return 0;
}

Optionen: 2, 12, undefiniertes Verhalten, kompiliert nicht
Korrekt: 2

Was gibt das folgende Programm aus?

#include<iostream>
 
int main(){
  
  auto a = new int[5]{9, 4, 1, 2};
  auto p = a+2;
  p += 2;
 
  std::cout << *p;
  
  return 0;
}

Optionen: 2, 12, undefiniertes Verhalten, kompiliert nicht
Korrekt: undefiniertes Verhalten

Was gibt das folgende Programm aus?

#include <iostream>
 
int main() {
 int a = 5, b = 10, c = 15;
 int *arr[] = {&a, &b, &c};
 std::cout << arr[1];
 
 return 0;
}

Optionen: 5, 10, 15, keine Ahnung
Korrekt: keine Ahnung

Was gibt das folgende Programm aus?

#include<iostream>
 
int main(){
  
  auto a = new const int[5]{9, 4, 1, 2};
  auto p = a+2;
  *p += 2;
 
  std::cout << *p;
  
  return 0;
}

Optionen: 2, 12, undefiniertes Verhalten, kompiliert nicht
Korrekt: kompiliert nicht

Was gibt das folgende Programm aus?

#include<iostream>
 
int main(){
  
  int* a = new int[5]{9, 4, 1, 2};
 
  std::cout << *a+2;
  
  return 0;
}

Optionen: 1, 11, undefiniertes Verhalten, kompiliert nicht
Korrekt: 11

Was git das folgende Programm aus?

#include<iostream>
 
int main(){
  
  int* a = new int[2]{1,2};
  *a++ = 0;
  
  std::cout << *a;
  
  return 0;
}

Optionen: 0, 1, 2, undefiniertes Verhalten, kompiliert nicht
Korrekt: 2