指针数组使用前初始化问题

背景

今天刚上复旦大一的表弟问我一道题,说是死循环,我在codeblocks里运行并不是死循环,报出一个signal警告停止运行。数组越界了,冒泡排序写的也有点问题。但是主要原因在输入输出方面,回顾了下指针的概念,最后终于发现问题所在,指针在使用前一定要初始化

资料

C语言指针的初始化和赋值
问题总结成一个典型错误

    int  *p;
    *p = 7;

这里就要深入指针的物理概念了,第一行定义了一个int指针类型变量p,但是没有将具体的内存中的地址赋给它,所以不能赋值

原始题目

编写输入、输出、排序3个函数。3个函数都以指针数组和数组元素个数为形参,分别实现将一组离散的变量顺序输入、输出和从大到小排序。

改进

#include
int shuru(int *p[],int n1)
{
    int i1;
    for (i1=0;i1*h[i4+1])
      { t=*h[i4];*h[i4]=*h[i4+1];*h[i4+1]=t; }
}
int main()
{
    int n,a[1000]={0},*qp[1000];
//  for (int i=0;i<1000 ;i++ )//这里是我补充的
//  {
//      qp[i]=&a[i]; 
//  }
    scanf("%d",&n);
    shuru(qp,n);
    paixu(qp,n);
    shuchu(qp,n);
    return 0;
}


你可能感兴趣的:(指针数组使用前初始化问题)