pointers - In C, what does a variable declaration with two asterisks (**) mean? -


i working c , i'm bit rusty. aware * has 3 uses:

  1. declaring pointer.
  2. dereferencing pointer.
  3. multiplication

however, mean when there 2 asterisks (**) before variable declaration:

char **apointer = ... 

thanks,

scott

it declares pointer char pointer.

the usage of such pointer such things like:

void setcharpointertox(char ** character) {    *character = "x"; //using dereference operator (*) value character points (in case char pointer } char *y; setcharpointertox(&y); //using address-of (&) operator here printf("%s", y); //x 

here's example:

char *original = "awesomeness"; char **pointer_to_original = &original; (*pointer_to_original) = "is awesome"; printf("%s", original); //is awesome 

use of ** arrays:

char** array = malloc(sizeof(*array) * 2); //2 elements  (*array) = "hey"; //equivalent array[0] *(array + 1) = "there";  //array[1]  printf("%s", array[1]); //outputs there 

the [] operator on arrays pointer arithmetic on front pointer, so, way array[1] evaluated follows:

array[1] == *(array + 1); 

this 1 of reasons why array indices start 0, because:

array[0] == *(array + 0) == *(array); 

Comments

Popular posts from this blog

asp.net - repeatedly call AddImageUrl(url) to assemble pdf document -

java - Android recognize cell phone with keyboard or not? -

iphone - How would you achieve a LED Scrolling effect? -