char *split[] = NULL
Это недопустимая инициализация
char *split[NPTR] = { NULL };
Это означает, что split - это массив, содержащий NPTR
указателей. Каждый указатель инициализируется значением NULL.
#define NPTR 32
В вашем комментарии это означает, что мы определяем NPTR = 32
как постоянное значение.
См. Код ниже, чтобы понять больше:
#include <stdio.h>
// define NPTR = 3;
#define NPTR 3
int main()
{
char * split[NPTR] = {NULL};
for(int i = 0; i < 3; i++) {
if(split[i] == NULL)
printf("ptr[%d] = NULL\n", i);
}
split[0] = "abc";
split[1] = "cdf";
split[2] = "ijk";
for(int i = 0; i < 3; i++) {
printf("%s\n", split[i]);
}
return 0;
}
Результат:
ptr[0] = NULL
ptr[1] = NULL
ptr[2] = NULL
abc
cdf
ijk