I have a problem I can't figure out. I wrote this code to shuffle the elements of an array:

```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

const char *array[]={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};

int main(int argc, char **argv)
{
 int i, tmp, randomize, size;

 size = sizeof(array)/sizeof(*array);

 srand(time(NULL));

 for(i=size;i>0;i--){
  randomize=0+(rand()%size);
  tmp=(int)array[i];
  array[i]=array[randomize];
  array[randomize]=(char*)tmp;
 }

 for(i=0;i<size;i++)
  printf("%s", array[i]);   
    return 0;
}

```

When I run the program, this is the iutput:

```
azlngiwexbv(null)uscphqjyrodmtk

```

I can't understand why the pointer is sometimes null and I can't understand why, changing the source code in this way:

```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char **argv)
{
 char *array[]={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
 int i, tmp, randomize, size;

 size = sizeof(array)/sizeof(*array);

 srand(time(NULL));

 for(i=size;i>0;i--){
  randomize=0+(rand()%size);
  tmp=(int)array[i];
  array[i]=array[randomize];
  array[randomize]=(char*)tmp;
 }

 for(i=0;i<size;i++)
  printf("%s", array[i]);    
 return 0;
}

```

Everything works fine.
Thanks.