c - Why do people declare array size sometimes? -


why there need declare array size example: type "array[50]" while type "array[]" still same thing. , have seen other similar things in code

talking arrays in function parameters

in function parameters, it's true int array[] , int array[40] exactly same thing (they both transformed compiler int *); however, i've seen second form being used form of documentation output arrays, show client code @ least how big array expected be.

personally, i'm kind of ambivalent use, since is useful documentation, novices think (1) requirement somehow enforced compiler , (2) sizeof(array) works expected.

talking array definitions

first of all, can int array[] if initializing something, e.g. in

int array[] = { 1, 2, 3, 4, 5}; 

the compiler doing favor counting elements in initializer , making array big enough; cannot do:

int array[]; /* not compile */ 

because compiler wouldn't know how big array allocate.

now, people do:

int array[50] = {1, 2, 3}; 

this can useful because have default value first values, , other initialized zero. done strings:

char buf[256] = "test"; 

here have buf initialized "test", still have headroom other characters, used if e.g. want concatenate other strings or use full size of buffer in different code paths.

char username[256] = "guest"; if(requirelogin) {     printf("please enter name: ");     if(!fgets(username, sizeof username, stdin)) exit(1);     size_t sz = strlen(username);     sz && username[sz-1]=='\n' && username[sz-1]=0; } logcurrentuser(username); 

Comments

Popular posts from this blog

javascript - Chart.js (Radar Chart) different scaleLineColor for each scaleLine -

apache - Error with PHP mail(): Multiple or malformed newlines found in additional_header -

java - Android – MapFragment overlay button shadow, just like MyLocation button -