Когда я меняю код char*
на char**
, но я не могу понять, почему я не могу назначить real[0]
на адрес.Почему я не могу присвоить реальный [0] адрес x
Когда я выделяю 10*sizeof(char)
память, это не значит, что я могу использовать real[0]
до real[9]
?
Я понимаю, что char** real
- после использования с как ниже
char** real = malloc(sizeof(char*) * 10);
Это решает проблему. Он выделяет 10 char*
, и из-за этого я могу назначить адрес x
и y
и по той же причине в случае char*
Я не могу назначить адрес, потому что он просто для символов символов?
И наконец, мне интересно, когда я смогу использовать real[0]
, real[1]
и т. Д.?
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main(){
char* real = malloc(sizeof(char) * 10);
char x = 'a';
char y = 'b';
real[0] = &x;
real[1] = &y;
printf("%c %c\n",x,y);
printf("%x\n",real[0]);
printf("%x\n",real[1]);
printf("%d\n",sizeof(&x));
printf("%d\n",sizeof(&y));
return 0;
}
Вы определили 'real [0]' и 'real [1]' как символы, а не указатели. Вы могли бы сказать «real [0] = x' вместо' real [0] = & x' –
Предполагая, что вы могли бы это сделать, что бы это значило? Что вы хотите, чтобы это означало? – harold
Спасибо! Но я просто хочу быть уверенным, может ли x быть частью массива, который хранит байты? – mech10