Прошел год с тех пор, как я кодировал C, но я не понимаю, почему это segfaulting
// Assume all imports are made
int printAgain(double** array, int size) {
int i = 0;
while(i < size) {
printf("Value: %f\n", *array[i]);
++i;
}
return 0;
}
int main(int argc, char *argv[]) {
int size = 10;
// Want an array of size 10 that contains doubles
double *array = malloc(size * sizeof(double));
if(array) {
int i = 0;
while(i < size) {
// Doing irrelavent stuff here
double value = 1.5; // 1.5 is random # I picked for this example
array[i] = value;
printf("Added to array: %f\n", array[i]);
++i;
}
printAgain(&array, size);
free(array);
return 0;
}
}
Первый оператор печати в main
работает нормально, но в printAgain
он напечатает первый элемент массива, но при попытке печати второго элемента возникнет ошибка.
Я полагаю, что я правильно распределяю, назначая точки массива значениям для l oop затем отправка адреса массива в функцию printAgain
. В этой функции я отменяю ссылку на данный адрес, чтобы получить доступ к массиву и распечатать его содержимое. Я знаю, что ошибка seg возникает при доступе за пределы / недопустимое пространство памяти, но я не понимаю, как это могло произойти, так как я «верю», что правильно выделил и передал адрес в массив из main.
I Я знаю, что я упускаю что-то чрезвычайно простое и элементарное, но я думаю, это то, что может сделать для вас 1 год не кодирования на языке, так что извините за это.