Во время инициализации char** map
я печатаю сохраненные значения.Когда я передаю этот указатель в функцию и печатаю значения, вывод ведет себя странно.
Если я не печатаю во время создания другого, тоже не ожидаемого, поведение происходит.Что происходит?
void main(){
char ** map = (char **) malloc(24);
int i;
for(i = 0; i < 24; i++){
map[i] = (char *) malloc (sizeof(char));
*map[i] = i;
printf("%d\n", *map[i]);
}
display_map(map);
}
void display_map(char **m){
int i;
char bit;
printf("\n");
for(i = 0; i < 24 ; i++ ){
bit = *m[i];
printf("%d\n", bit);
}
}
output:
0
1
2
3
.
.
23
48 //expected 0
1
2
3
.
.
23
Если я, однако, удаляю оператор печати при создании char** map
, я получаю этот вывод из display_map
output:
32 //expected 0
-96 //expected 1
32 //expected 2
-96 //expected 3
32 //expected 4
5
6
7
8
.
.
23
Это такая загадка дляя.