2D Arrays and Pointers - C -
just trying head round arrays , pointers in c , differences between them , having trouble 2d arrays.
for normal 1d array have learned:
char arr[] = "string constant"; creates array of chars , variable arr represent memory created when initialized.
char *arr = "string constant"; creates pointer char pointing @ first index of char array "string constant". pointer point somewhere else later.
char *point_arr[] = { "one", "two","three", "four" }; creates array of pointers point char arrays "one, "two" etc.
my question
if can use both:
char *arr = "constant"; and
char arr[] = "constant"; then why can't use:
char **pointer_arr = { "one", "two", "three", "four" }; instead of
char *pointer_arr[] = { "one", "two", "three", "four" }; if try char ** thing error "excess elements in scalar initializer". can make char** example work allocating memory using calloc, didn't have char *arr = "blah";. don't see why necessary , don't understand difference between:
char **arr_pointer; and
char *arr_pointer[]; many in advance advice.
in short, cannot use { ... } initialiser scalar.
char **arr_pointer declares scalar, not array. in contrast, reason can char *arr = "constant"; because you're still declaring scalar, happens point @ string literal.
Comments
Post a Comment