a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

深入理解C語言 static、extern與指針函數

2020-01-26 15:40:21
字體:
來源:轉載
供稿:網友

1.exit(0)正常退出程序

exit(1)程序異常時退出程序

2.static(靜態變量)修飾局部變量

在局部變量使用static修飾,會延長局部變量的存在期。但我們需要注意一下幾點:

•雖然static修飾變量的生存期很長,但它始終是局部變量,不能在其他函數中使用
•static全局變量與普通的全局變量有什么區別?static局部變量和普通局部變量有什么區別?static函數與普通函數有什么區別?
     全局變量(外部變量)的說明之前再冠以static 就構成了靜態的全局變量。全局變量本身就是靜態存儲方式,  靜態全局變量當然也是靜態存儲方式。 這兩者在存儲方式上并無不同。這兩者的區別雖在于非靜態全局變量的作用域是整個源程序,  當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。 而靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效,  在同一源程序的其它源文件中不能使用它。由于靜態全局變量的作用域局限于一個源文件內,只能為該源文件內的函數公用,  因此可以避免在其它源文件中引起錯誤。
     從以上分析可以看出, 把局部變量改變為靜態變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變為靜態變量后是改變了它的作用域, 限制了它的使用范圍。
     static函數與普通函數作用域不同。僅在本文件。只在當前源文件中使用的函數應該說明為內部函數(static),內部函數應該在當前源文件中說明和定義。對于可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件
     static全局變量與普通的全局變量有什么區別:static全局變量只初使化一次,防止在其他文件單元中被引用;
     static局部變量和普通局部變量有什么區別:static局部變量只被初始化一次,下一次依據上一次結果值;
     static函數與普通函數有什么區別:static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝
3.extern(外部變量)  修飾全局變量

extern 不但可以修飾變量還可以修飾函數

全局變量范圍已經很廣了,為什么還要用extern來修飾呢?看下面一個例子

復制代碼 代碼如下:

#include "stdio.h"
void main()
{
      extern        a;
      extern        b;
      printf("a=%d,b=%d",a,b); 
}
int a=13,b=5;


上面例子中,在定義了a,b之前就使用它,也就是說extern擴展了全局變量的作用范圍。

extern不僅上邊例子這種用法,在不同文件中的全局變量也可以使用extern來使用。

4.指針函數

定義:指針函數就是函數類型和返回值都是指針的函數。

指針函數的一般形式:

 類型 *函數名(參數列表)

下面用一個例子來體會一下指針函數的妙用吧

復制代碼 代碼如下:

/* Note:Your choice is C IDE */
#include "stdio.h"
char * SubString(char s[],int i,int j);
char *SubString1(char s[] ,char temp[], int i,int j);
void main()
{
char string[]="I Love C Language";
char *ps=NULL;
char temp[100];
ps=SubString(string,2,9);
printf("%s/n",ps); 
SubString1(string,temp,2,9);
printf("%s/n",temp);
}

char * SubString(char s[],int i,int j)
{
static char temp[100];/*這個地方聲明的臨時數組必須為static,否則值傳不會去*/
int m,n;
for(m=0,n=i;n<=j;m++,n++)
{
temp[m]=s[n];
}
temp[m]='/0';
return temp;
}
char *SubString1(char s[] ,char temp[], int i,int j)
{
int m,n;
for(m=0,n=i;n<=j;m++,n++)
{
temp[m]=s[n];
}
temp[m]='/0';
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 久久久久亚洲一区二区三区 | 欧美色性| 久久美女视频 | 国产99久久久国产精品 | 国产精品久久在线观看 | 欧美同性三人交 | 国产2区 | 久久亚洲视频 | 国产在线拍揄自揄拍视频 | 91免费版在线观看 | 精品福利在线视频 | 亚洲免费在线观看 | av午夜电影 | 91精品国产综合久久久蜜臀图片 | 在线激情网 | 欧美成年网站 | 日韩色av | 精品欧美一二三区 | 自拍偷拍亚洲欧美 | 99热最新 | 日韩欧美中文在线观看 | 日韩精品1区2区 | 999国产一区二区三区四区 | 亚洲精品1区 | 日批免费网站 | 一区二区在线看 | 99在线观看| 99爱免费观看国语 | 一区二区三区四区精品 | 免费国产视频在线观看 | 精品成人在线 | a在线免费观看 | 久久美女| 叶山小百合av一区二区 | 精品久久久久久国产 | aaa级片| 999视频网 | 欧美日韩一二区 | 久久女人 | 国产精品成人在线观看 | 国产福利一区二区三区四区 |