变量,常量,静态变量的使用实例

#include<stdio.h>
#include<stdlib.h>
#define N 5//标识符常量(宏定义常量),值不可改

int put(int num3,int arr[]);//输出函数
int add(int arr[]);//计算函数
void out(int num5);//输出函数

int num1=0;//全局变量,本工程文件都可使用
static int num2=0;//静态全局变量,作用域变小,本文件可使用

int main ()
{
 //注:C语言中const常量保存在内存中(内存可见)。C++中保存在寄存器和内存中,运行时优先使用寄存器中值,
 //若内存中值被改变,则内存值不等寄存器值出错,加关键字volatile保证内存可见性解决。
 const int num3=N;//定义常量,num3值不可变,但可通过地址改变,
 int arr[N]={0};//局部变量,作用域为main函数,/num3不可代替N值,即arr[num3]!=arr[N]==arr[5]
 
 enum sex{//枚举常量
  one=1,//第一个值默认值为0,
  two,//第一个值+1
  three//第一个值+2
   }num4;//枚举变量名

 while(1)
 {
  printf("\n*********************\n");
  printf("\n输入选择(输入1,计算2,输出结果3):");
  scanf("%d",&num4);
  switch(num4)
  {
  case one://one=1
   printf("\n********************\n");
    put(num3,arr);
   break;
  case two:
   printf("\n********************\n");
   num1=add(arr);//arr[num3]??
   break;
  case three:
   printf("\n********************\n");
   out(num1);
   break;
  default:
   printf("输入错误\n");
   break;
   }
 }

 system("pause");
 return 0;
}

 int put(int num3,int arr[])
 {
 register int i=0;//寄存器变量,(寄存器变量无地址操作)
  for(i=0;i<num3;i++)
  {
   printf("输入第%d个数:",i);
   scanf("%d",&arr[i]);
  }
 }

 int add(int arr[])
 {
  int num6=0;//每次调用add函数num6清0,
  //num2静态变量,生命周期变长,出了代码块后不消毁,也不会再次初始化。下一次num2=num2(上)+arr[i]
  static int num5;

  for(num2=0;num2<N;num2++)
  {
   
   num5+=arr[num2];
  }

  num6+=num5;//此函数结束后num6销毁,每次num6=0+num2。否则下一次num6=num6(上)+num2
  printf("计算完成\n");
  return num6;
 }

 void out (int num1)
 {
  printf("结果:%d",num1);
 }
发布了43 篇原创文章 · 获赞 18 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章