国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > 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';
}

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

圖片精選

主站蜘蛛池模板: 元谋县| 敖汉旗| 公安县| 松阳县| 新安县| 元谋县| 望奎县| 武城县| 金山区| 普陀区| 彭阳县| 乳源| 丰都县| 孙吴县| 平塘县| 敦煌市| 海伦市| 通化市| 淮南市| 邢台县| 宁强县| 德庆县| 沅陵县| 华安县| 嵊泗县| 赣榆县| 泗洪县| 申扎县| 内黄县| 武定县| 锡林郭勒盟| 油尖旺区| 新晃| 新巴尔虎右旗| 南京市| 石狮市| 启东市| 甘泉县| 昭平县| 福鼎市| 高邑县|