#include <cstdlib>
#include <iostream>
using namespace std;
void f(int k[0]){ --k[1]; }
void g(int *k){(*(--k))++;}
void h(int k[1]){--k;}
int main(){
int k[]={1,2,3,4};
f(k+2);
g(k+2);
h(k+2);
for (int i = 1; i < 4; i++)
cout << k[i];
}
Правильный вывод 333
, но я думал, что это 334
. Я не понимаю, что именно происходит в функции f с инструкцией --k[1]
. Я мог бы согласиться с правильным выходом, если код был k[0]--
. Какая разница? Благодарякакие C++ указатели делают в этом коде
Печать 'k [4]' - неопределенное поведение. – timrau
Он никогда не печатает k [4] – rcrmn
Не имеет значения, что делает этот код, потому что вещь, которую вы должны сделать, увидев ее, отследит автора и избивает их, пока они не плачут, как ребенок. Затем вы должны заставить их перекодировать его так, как это сделал бы профессиональный разработчик, а не безумная обезьяна на амфетаминах. – paxdiablo