首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

帮忙,小弟我的指针为什么总是空指针

2012-04-03 
大虾帮忙,我的指针为什么总是空指针?这是一个比较三个字符大小的程序,可我的指针总是报空,大家帮忙看一下m

大虾帮忙,我的指针为什么总是空指针?
这是一个比较三个字符大小的程序,可我的指针总是报空,大家帮忙看一下
main()
{char   *a[3];
  char   **p,*k;
  int   i,j;
  for(i=0;i <3;i++)
  scanf( "%s ",a[i]);
  p=a;
  for(i=0;i <3;i++)
  {for(j=i+1;j <3;j++)
      if(strcmp(*(p+i),*(p+j))> 0)
          {k=*(p+i);*(p+i)=*(p+j);*(p+j)=k;}
  }
  p=a;
  for(i=0;i <3;i++)
  printf( "%s\n ",*(p+i));
  }

[解决办法]
main()
{char *a[3];
char **p,*k;
int i,j;
for(i=0;i <3;i++){
a[i] = (char *)malloc(100);
scanf( "%s ",a[i]);
}
p=a;
for(i=0;i <3;i++)
{for(j=i+1;j <3;j++)
if(strcmp(*(p+i),*(p+j))> 0)
{k=*(p+i);*(p+i)=*(p+j);*(p+j)=k;}
}
p=a;
for(i=0;i <3;i++)
printf( "%s\n ",*(p+i));
}
[解决办法]
不想调试了,因为不知道你的目的什么,但是可以给你个提示:

for(i=0;i <3;i++)
scanf( "%s ",a[i]);
这时候注意a[i]还没有初始化,即该指针是野指针(可能只想内存的任意地方),也就是说根本就没有为该指针分配存储空间。
还有要指出a是一个指针数组,而不是指向字符串的指针。

热点排行