變量,常量,靜態變量的使用實例

#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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章