笔记(6)存储类、链接和内存管理-…

来源:互联网 发布:手机导航软件 编辑:程序博客网 时间:2024/06/16 13:00
-------存储类、链接和内存管理
作用域、链接、存储时期
   一、5种存储类
   1、自动的声明方式:在代码块内
  2、寄存器的声明方式:在代码块内,使用关键字register
   3、具有外部链接的静态的声明方式:所有函数之外
  4、具有内部链接的静态的声明方式:所有函数之外,使用关键字static
  5、空链接的静态的声明方式:代码块内,使用关键字static
   ··图片c000··
笔记(6)存储类、链接和内存管理--C <wbr>Primer <wbr>Plus


  使用register声明的类型是有限的。eg:处理器可能没有足够大的寄存器来容纳double类型。
   ··图片c001··
笔记(6)存储类、链接和内存管理--C <wbr>Primer <wbr>Plus



-------------------------------------------------------------------------------------- 
 二、存储类说明符:auto、register、static、extern、typedef
   ··图片c002··
笔记(6)存储类、链接和内存管理--C <wbr>Primer <wbr>Plus



 int tern=1;
   main()
   {
   extern inttern;//extern表明在声明一个已经在别处定义了的变量
  tern声明了两次,第一次称为为定义声明,为变量留出了存储空间;第二次称为引用声明,
  只是告诉编译器要使用之前定义的变量tern,因此它们是不同的定义。
--------------------------------------------------------------------------------------
   -->>静态变量的“静态”实际上是指变量的位置固定不动.
   -->>外部变量的作用域:从声明的位置开始到文件结尾为止.
   
-------------------------------------------------------------------------------
--随机函数--->>>产生0到32767范围内的随机数
使用ANSI C的可移植算法

#include<stdio.h>
#include<time.h>
static unsigned long int next = 1;//随机数种子
void srand(unsigned int seed)
{
   next=seed;
}
int rand(void)
{
  //产生随机数的魔术般的公式
   next=next*110351524+12345;
    return(unsigned int)(next/65536)2767;
}
int main()
{
    //intn=6;
   srand((unsigned int)time(0));
   //while(n--)
   printf("%lu\n",rand());
return 0;
}
//1到50的随机数  
一、
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    int i;
   srand((unsigned)time(NULL));
   while(1)
      i=rand();
    if(i>-1&&i<50)
     {
        printf("%d",i);
        break;
     }
    }
return 0;
}
二、
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
    unsigned intj;
   srand((unsigned int)time(0));
    j=(unsignedint)(rand()P);
   printf("%ud\n",j);
}

0 0
原创粉丝点击