Я использую массив, и я попробовал этот код:Динамический массив в C
#include <stdio.h>
#include <stdlib.h>
int main()
{
char **q = (char*)malloc(1*sizeof(char*));
q[0]="So Many Books";
q[1]="So Many Books";
q[2]="So Many Books";
q[3]="So Many Books";
q[4]="So Many Books";
printf("%s\n",q[0]);
printf("%s\n",q[1]);
printf("%s\n",q[2]);
printf("%s\n",q[3]);
printf("%s\n",q[4]);
return 0;
}
Почему компилятор не дает мне ошибку здесь? Я только забронировал место для одной струны из массива строк.
Я посмотрел на некоторые ресурсы, как:
Ошибок синтаксиса нет, поэтому ошибок компилятора нет. В 'c' управление памятью до программиста. Похоже, вы уже знаете, что ваш код изобилует UB. – yano
Вы программист на C. Предполагается, что вы знаете, что делаете. Если вам нужна ручная работа, выберите другой язык. Это особенно сильно сказывается на новичках, но мышление - «программист знает, что они делают», даже если это очевидно, что они этого не делают. –
Почему вы задаете результат 'malloc'' char * ', когда вам нужен символ' char ** '? Почему вы полностью обманываете результат 'malloc'? – AnT