Изменение статического массива на динамический - C (СИ)
Формулировка задачи:
Помогите заменить в коде статический массив на динамический
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char s[80], sym;
int k, i;
system("chcp 1251");
system("cls");
printf("Vvedite stroky: ");
gets(s);
sym = 'a';
k = 0;
for(i=0; s[i]!='\0'; i++)
{
if(s[i]==sym)
k++;
}
if ( k > 0)
printf("Yes\n");
else
printf("No\n");
getchar();
getchar();
}Решение задачи: «Изменение статического массива на динамический»
textual
Листинг программы
char* s = (char*)calloc(80, sizeof(char));
Объяснение кода листинга программы
В данном коде происходит следующее:
- Создается переменная типа char* с названием
s, которая указывает на блок памяти, выделенный с помощью функции calloc. В данном случае, выделенный блок имеет размер 80 элементов типа char. - Значение переменной
sприводится к типу (char*) с помощью оператора reinterpret_cast. Это необходимо для того, чтобы можно было использовать оператор sizeof для вычисления размера памяти, выделенной под один элемент типа char. - Функция calloc используется для выделения памяти под массив из 80 элементов типа char. Память выделяется с учетом размера каждого элемента, что позволяет обеспечить нулевой начальный баланс для каждого элемента массива.
- Значение переменной
sприсваивается результат вызова функции calloc. Это означает, чтоsтеперь указывает на начало выделенного блока памяти. - В данном коде не происходит присвоения значения переменной
s, поэтому она остается нулевой.