Я потерян. Я не могу назначить int
разыменованным int *
.Нельзя назначить int для разыменованных int в C
printf("in octave\n");
int *default_octave;
printf("attr[%d]: %s\n",i+1,attr[i+1]);
const char *octave_char = attr[i+1];
printf("octave_char: %s\n", octave_char);
int octave_number = atoi(octave_char);
printf("octave_number: %d\n", octave_number);
fflush(stdout);
*default_octave=octave_number;
printf("in octave pt 2\n");
fflush(stdout);
Это выход:
in octave
attr[1]: 4
octave_char: 4
octave_number: 4
Segmentation fault
Почему?
Запуск отладчика GDB добирается до этой линии, а затем и от сбоев.
0 int octave_number = atoi(octave_char);
(gdb) s
41 printf("octave_number: %d\n", octave_number);
(gdb)
octave_number: 4
42 fflush(stdout);
(gdb)
43 *default_octave=octave_number;
(gdb) print octave_number
$1 = 4
(gdb) s
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400a7b in parse_song (song_data=0x7fffffffe7a8, attr=0x602600) at nullaby.c:43
43 *default_octave=octave_number;
(gdb)
Я понятия не имею, что я могу сделать, чтобы исправить это.
Спасибо, что дал мне указательный прозвище. Теперь все имеет смысл теперь о указателях, стеке и куче ... – twmb
Конечно ...:) Но здесь нет предпочтительного способа ... Все зависит от того, что пытается сделать op ...Как указатель может указывать на что угодно, он может указывать на адрес стека или адрес кучи ... Просто нужно указать правильный адрес, если вы хотите разыменовать его ... – Macmade
Нет проблем с подсчетом голосов, до тех пор, пока оп получает ответ, который ему нужен ...:) – Macmade