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

背景

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

资料

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

    int  *p;
    *p = 7;

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

原始题目

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

改进

#include<stdio.h>
int shuru(int *p[],int n1)
{
    int i1;
    for (i1=0;i1<n1;i1++) scanf("%d",p[i1]);
}
int shuchu(int *q[],int n2)
{
    int i2;
    for (i2=0;i2<n2;i2++) printf("%d ",*q[i2]);
}
int paixu(int *h[],int n3)
{
    int i3,i4,t;
    for (i3=0;i3<n3;i3++)
      for (i4=0;i4<n3-i3-1;i4++)
      if(*h[i4]>*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;
}


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,827评论 3 44
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,153评论 1 51
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,755评论 0 6
  • “他在中国变为尘土,以便在他日 我们的女儿得以热爱这人间……” ——W.H.奥登...
    Stellavallis阅读 1,819评论 0 1
  • 琴子在高中的时候就谈恋爱了,初恋男友跟她同班,很多人都不太看好年轻的爱情,有人说太年轻,不懂得责任感,有人说小小年...
    迷糊香阅读 4,266评论 3 2

友情链接更多精彩内容