指针\分配动态空间-筛选法求质数

简介: 指针\分配动态空间-筛选法求质数

动态空间申请了以后一定一定要注意释放,否则会一直占用空间

关闭程序之后占用空间会自己释放,但如果是长期运行的大项目,会造成严重后果

#include<stdio.h>
#include<stdlib.h>
int main()
{
  //初始化
  int i,j,n;
  int *s;   //用于申请动态数组空间
  int count=0;  //用于控制最终的输出个数
  //读入数组长度
  do
  {
    printf("请输入数组长度(正整数):");
    scanf("%d",&n);
  }while(n<=0);
  //数组长度——下标从0开始,故申请n+1个
  s=(int*)calloc(n+1,sizeof(int));    //calloc会自动初始化为0
  //申请失败则终止程序
  if(s==NULL)   //调用失败则返回值为NULL
  {
    printf("申请动态空间失败");
    exit(1);
  }
  //筛选法
  s[0]=s[1]=1;  //初始化都为0,就令非质数为1
  for(i=2;i<=n;i++)
    if(s[i]==0)
      for(j=2*i;j<n+1;j+=i)
        s[j]=1;   //否则s[]的值不变,仍为0
  //输出质数(七个一行)
  for(i=0;i<=n;i++)
    if(!s[i])
    {
      printf("%d\t",i);
      count++;
      if(count%7==0)
        printf("\n");
    }
  printf("\n");
  //#####释放动态数组空间#####很重要,一定要做,不然会有内存泄漏的风险
  free(s);  //头文件stdlib.h
  system("pause");
  return 0;
}


目录
相关文章
|
7月前
|
存储 Go iOS开发
掌握Go语言:探索Go语言指针,解锁高效内存操作与动态数据结构的奥秘(19)
掌握Go语言:探索Go语言指针,解锁高效内存操作与动态数据结构的奥秘(19)
|
1月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
130 13
|
6月前
指针\动态二维数组空间
指针\动态二维数组空间
38 4
|
7月前
|
C语言
C语言指针使用及动态分配内存
C语言指针使用及动态分配内存
73 0
指针指向空间的申请和释放易错点
指针指向空间的申请和释放易错点
|
存储 C++ 开发者
你还不进来看看C++类与对象【7】 —— 动态多态底层原理剖析&&(纯)虚析构解决父类指针不能释放子类属性问题嘛
你还不进来看看C++类与对象【7】 —— 动态多态底层原理剖析&&(纯)虚析构解决父类指针不能释放子类属性问题嘛
145 0
你还不进来看看C++类与对象【7】 —— 动态多态底层原理剖析&&(纯)虚析构解决父类指针不能释放子类属性问题嘛
|
存储 编译器 C++
【C++要笑着学】虚函数表(VBTL) | 观察虚表指针 | 运行时决议与编译时决议 | 动态绑定与静态绑定 | 静态多态与动态多态 | 单继承与多继承关系的虚表(二)
虚表是编译器的实现,而非C++的语言标准。上一章我们学习了多态的概念,本章我们深入探讨一下多态的原理。文章开头先说虚表指针,观察编译器的查表行为。首次观察我们先从监视窗口观察美化后的虚表 _vfptr,再透过内存窗口观察真实的 _vfptr。我们还会探讨为什么对象也能切片却不能实现多态的问题。对于虚表到底存在哪?我们会带着大家通过一些打印虚表的方式进行比对!铺垫完虚表的知识后,会讲解运行时决议与编译时决议,穿插动静态的知识点。文章的最后我们会探讨单继承与多继承的虚表,多继承中的虚表神奇的切片指针偏移问题,这块难度较大,后续我们会考虑专门讲解一下,顺带着把钻石虚拟继承给讲了
390 1
【C++要笑着学】虚函数表(VBTL) | 观察虚表指针 | 运行时决议与编译时决议 | 动态绑定与静态绑定 | 静态多态与动态多态 | 单继承与多继承关系的虚表(二)
|
存储 C++
指针(二)- C++内存模型、动态分配内存new和delete
指针(二)- C++内存模型、动态分配内存new和delete
200 0
指针(二)- C++内存模型、动态分配内存new和delete
|
存储 Java Unix
【FAQ】go的十万个为什么?-指针分配|Go主题月
与 C 系列中的所有语言一样,Go 中的所有内容都按值传递。也就是说,一个函数总是获得所传递事物的副本,就像有一个赋值语句将值分配给参数一样。例如,将int值传递给函数将生成的副本int,而将指针传递将生成指针的副本,但不会复制其指向的数据。
146 0
|
C语言
C语言指针使用及动态分配内存
C语言指针使用及动态分配内存
102 0