Возможно, это действительно вопрос новичков, но я действительно не мог применить ни один из других ответов на мой случай.Настройка размера массива в соответствии с переменной
Говорят, что у меня есть этот кусок кода:
int sizemes=0;
char letrarand()
{
int sizemes = 31;
char mesaleat[31] = { ' ' };
char *pMesaleat;
pMesaleat = mesaleat;
int numaleat = 0, i=0;
int randascii = 0;
srand(time(NULL));
for (i = 0; i < 31; i++)
{
numaleat= rand() % 26;
randascii = numaleat + 65;
*(pMesaleat+i) =randascii;
printf("%c \t",*(pMesaleat+i));
}
return 0;
}
Где letrarand это функция, которая будет создавать массив из 31 элементов и присвоить случайное заглавную букву для каждого из этих элементов. Сейчас это работает, но я хочу, чтобы иметь возможность настроить размер массива в соответствии с переменной sizeofmes, так что если эта переменная (которая находится вне функции) равна 15, массив будет иметь 15 элементов и т. Д. Почему-то я не могу этого сделать, какие-то идеи?
1. 'int sizemes' объявляется как внутри, так и внутри функции. 2. '* (pMesaleat + i) = randascii;' где 'randascii' является' int', а '* (pMesaleat + i)' является 'char'. В качестве ответа вы не должны использовать массивы 'char mesaleat [31]', но вместо этого используйте [malloc] (http://man7.org/linux/man-pages/man3/malloc.3.html). например 'char * pMesaleat = (char *) malloc (sizeofmes * sizeof (char))'. – CristiFati
@CristiFati: Это чепуха! Такой малый массив лучше автоматический. OP может использовать VLA для создания переменной длины: 'char mesaleat [sizemes]'. – Olaf