Так что я пытаюсь изменить значение в x [2] от 0 до 8 с помощью метода, так как у меня это не работает. Как я могу это сделать? Я пробовал искать, но не помог.Почему это изменение не изменится?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void changevar(int* x){
int* y;
y = &x[2];
y = 8;
}
int main(int argc, char** argv){
int* c;
c = (int*) malloc(sizeof(int));
printf("here %d\n", c[2]);
changevar(&c);
printf("here %d\n", c[2]);
free(c);
}
EDIT: Я новичок в указатели
Вы выделить пространство для одного целого, но доступ к третьим в «буфер». Поведение вашего кода не определено, нет «исправления». – StoryTeller
1) 'c [2]' - это неопределенное поведение. 2) 'changevar (& c)' является нарушением ограничения (т. Е. Не компилируемым). 'changevar' ожидает аргумент' int * '. Вы передаете аргумент 'int **'. 3) 'y = 8' является нарушением ограничения (т. Е. Не компилируемым). Вы не можете назначать произвольные целые числа указателям. – AnT
@AnT Я исправил это, спасибо, что указал на это! Первоначально у меня был параметр (int ** x) для changevar. Знаете ли вы, как я могу изменить x [2]? – reVolutionary