Сначала здесь
int *unassignedPointer; /*here it can points to any unknown memory location */
unassignedPointer
не инициализируется и не указывает на правильное расположение в памяти, а разыменование (если вы пытались) приводит к неопределенному поведению. ваш компилятор может предупредить вас как
ass unassignedPointer ’используется неинициализированным в этой функции
[-Werror = неинициализированным]
, если вы скомпилировали свой код с соответствующим флагом предупреждения, таким как -Wall
и т. Д., Поэтому сначала инициализируйте unassignedPointer
с помощью NULL
, как
int *unassignedPointer = NULL;
Это опасная практика, или я должен просто игнорировать эти предупреждения? никогда не следует игнорировать предупреждение компилятора. Лучше скомпилировать любой простой код с помощью
gcc -Wall -Wstrict-prototypes -Werror test.c /* Werror, stops the compilation, convert warning into error */
Также читайте C
языковой стандарт, черновик n1256 раздел 5.1.2.2.1
Запуск программы: Он должен быть определен с типом возврата int и без параметров:
int main(void) { /*
...
*/ }
или с двумя параметрами (здесь упоминаются как argc и argv, хотя
Можно использовать Ames, так как вы локальны для функции, в которой
ты объявлен):
int main(int argc, char *argv[]) { /*
...
*/ }
Это
void main() {
/*some code */
}
не правильно, вместо этого используйте
int main(void) {
/*some code */
}