Я всегда программировал на Java, что, вероятно, почему я так запутался в этом:
В Java объявляю указатель:
int[] array
и инициализировать его или присвоить ему некоторую память:
int[] array = {0,1,0}
int[] array = new int[3]
Теперь, в C, все это запутывает. Сначала я подумал, что это так же просто, как объявить это:
int array[]
и инициализировать его или присвоить ему некоторую память:
int array[] = {0,1,0}
int array[] = malloc(3*sizeof(int))
int array[] = calloc(3,sizeof(int))
Если я ошибаюсь, все вышеперечисленное эквивалентно Java-C, правильно?
Затем, сегодня я встретил код, в котором нашел следующее:
pthread_t tid[MAX_OPS];
и некоторые строки ниже, без какой-либо инициализации...
pthread_create(&tid[0],NULL,mou_usuari,(void *) 0);
Удивительно (по крайней мере для меня), код работает! По крайней мере, на Java, которая вернет хорошее "исключение NullPointerException"!
Итак, в порядке:
-
Я правильно со всеми переводами Java-C "?
-
Почему этот код работает?
-
Есть ли разница между использованием
malloc(n*sizeof(int))
иcalloc(n,sizeof(int))
?
Заранее спасибо