Ваша программа делает что-то совершенно непреднамеренное.
int *x[5] = { 1,5,4,3,1 };
int *y[5]= { 1,5,4,3,1 };
Здесь вы инициализируете группу int указателей со значениями от 1 до 5. Таким образом, они указывают на недопустимую память.
Позже, здесь:
for (int z = 0; z <= 4; ++z) {
printf_s("%s", x[z]);
}
Вы говорите ему напечатать строку в этой недопустимой памяти.
0x00000001
в Access violation writing location 0x00000001
на самом делешестнадцатеричное представление первого 1
в int *x[5] = { 1,5,4,3,1 };
.
Что вы, вероятно, хотите, это:
int changeArray(int *a) {
for (int z = 0; z < 5; ++z) {
a[z] = 1;
}
}
И это:
int main(void) {
int x[5] = { 1,5,4,3,1 };
changeArray(x);
for (int z = 0; z <= 4; ++z) {
printf("%d", x[z]); // also consider adding space, such as "%d "
}
}