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';

}

C 语言 static、extern与指针函数介绍的更多相关文章

  1. C语言Windows程序开发—TextOut函数介绍【第02天】

    (一)TextOut函数的参数介绍: BOOL TextOut ( //如果函数调用成功,返回TRUE,否则,返回FALSE HDC hdc, //用于显示字符串的控件ID int nXStart, ...

  2. C语言Windows程序开发—MessageBox函数介绍【第01天】

    (一)MessageBox函数的参数介绍: int MessageBox ( HWND hWnd, //弹出MessageBox对话框所属的窗口句柄 LPCTSTR lpText, //指向Messa ...

  3. C语言Windows程序开发—CreateWindow函数介绍【第03天】

    (一)CreateWindow函数的参数介绍: HWND CreateWindow( LPCTSTR lpClassName, //Windows窗口中预定义的控件结构体,包括:BUTTON(按钮), ...

  4. C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例

    一个奇怪的C语言问题,涉及到指针.数组.堆栈.以及printf.以下实现: 整数向字符串的转换,返回字符串指针,并在main函数中调用printf显示. #include<stdio.h> ...

  5. R语言爬虫:Rvest包函数介绍(表格)

    Rvest 包中常用函数一览: 函数 作用 read_html() 读取 html 页面 html_nodes() 提取所有符合条件的节点 html_node() 返回一个变量长度相等的list,相当 ...

  6. static和extern关键字 对函数的作用

    本文目录 • 一.extern与函数 • 二.static与函数 • 三.static.extern与函数的总结说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能 ...

  7. 15-static和extern关键字1-对函数的作用

    一.extern与函数 如果一个程序中有多个源文件(.c),编译成功会生成对应的多个目标文件(.obj),这些目标文件还不能单独运行,因为这些目标文件之间可能会有关联,比如a.obj可能会调用c.ob ...

  8. c语言指针函数与函数指针

    例一:指针函数 指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符    *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个 ...

  9. c语言的extern与static与递归

    知识点: 外部函数:定义的函数能被本文件和其他文件访问 1> 默认情况下所有函数都是外部函数 2> 不允许有同名的外部函数 内部函数:定义的函数只能被本文件访问,其他文件不能访问 1> ...

随机推荐

  1. 【加密算法】Base64

    一.简介 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.可查看RFC2045-RFC2049,上面有MIME的详细规 ...

  2. wpf数据绑定 - StringFormat的妙用

    写在前面 WPF中常常有这样的情况:需要在UI上显示一些信息,比如显示一张图片的信息,信息结构是: 图片名:Xxx 图片尺寸:Xxx 而其中的 Xxx 通常通过数据绑定来获得, Xxx 前面的内容是需 ...

  3. dpdk EAL: Error reading from file descriptor 23: Input/output error

    执行test程序时输出: EAL: Error reading from file descriptor 23: Input/output error 原因: 在虚拟机添加的网卡,dpdk不支持导致的 ...

  4. brew - 安装gradle

    我安装完brew之后,马上开始安装gradle,但是shell总是卡在执行"brew update"这里,今天终于解决了,出现这样问题的原因是初次安装brew,它使用的源是国外的, ...

  5. HTTP协议、HTTP协议原理分析

    百度百科中说明: 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为 ...

  6. chrome浏览器本地文件支持ajax请求的解决方法

    .右键chrome的快捷键--->点击属性 .在快捷方式的选项卡的目标里末尾填上如下内容: --allow-file-access-from-files 要关闭所有的chrome打开的网页

  7. EL表达式中的11个隐式对象

    EL表达式中定义了11个隐式对象,使用这些隐式对象可以很方便地读取到Cookie.HTTP请求消息头字段.请求参数.Web应用程序中的初始化参数的信息,EL表达式中的隐式对象具体如下: 隐式对象 作用 ...

  8. fullpage.js与animate.css搭配使用

    jquery的fullpage.js插件的使用 https://alvarotrigo.com/fullPage/#3rdPage   官网 https://github.com/alvarotrig ...

  9. cobbler 自定义私有yum源

    目的:为客户端自动添加上yum源 以下以openstack源为例 1.新建私有yum源[root@localhost ~]#cobbler repo add --name=openstack-mita ...

  10. 【13】JMicro微服务-ID生成与Redis

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到12小节 1. 微服务中ID地位 如果说前面小节的功能点是微服务的大脑,那么全局唯一ID则是微服务 ...