fiind函数里要是把k换为*p,就没有任何输出是为什么

#include<string.h>
#include<stdlib.h>
#include<string.h>
/*
* 该函数用来实现查找n个字符串中最大的那一个
* a是二维字符数组,每一行存放一个字符串,n为待查找的字符串的个数
*/

char * find_max_string(char a[][300],int n)
 {
     char *pmax;
    int i,k;
    k = 0;
    for( i = 0 ; i < n ; i++ ){
        if( strcmp( a[i] , a[k] ) > 0 ) 
            k = i ;
        }
    pmax = &a[k];
    return pmax;
 } 

 int main()
{  
    char a[10][300]={0},*p;
    int n=0;
    while(gets(a[n])!=NULL){
        n++;
    }
    p=find_max_string(a,n);
    puts(p);
    return 0;
 }   

fiind函数里要是把k换为*p,就没有任何输出是为什么
程序是要用指针实现查找最大的字符串

char *pmax;
    int i,*p;
    *p = 0;
    for( i = 0 ; i < n ; i++ ){
        if( strcmp( a[i] , a[*p] ) > 0 ) 
            *p = i ;
        }
    pmax = &a[*p];
    return pmax;

int i,* p;
* p = 0;
这那行啊,p指针没有空间你就进行赋值,程序必死无疑