betway必威-betway必威官方网站
做最好的网站

extern与指针函数介绍,资深程序员分享的C语言编

我们是不是在写程序的时候错误很多,就算编译通过了也达不到我们预期的结果。之后自己还找不到错在哪儿。我觉得语言之所以能称之为语言,首先它肯定是一种工具。一种相互交流、相互通信、相互传达之间意图的工具。作为语言那肯定得有自己的语法(比如像表达式,函数,循环,指针)。C语言虽然很强大,但是他也有不少陷阱。所以,写这篇文章有两个目的:一是把C语言一些误用易错的地方总结一下,二是把C语言一些基本语法总结一下。

1.exit正常退出程序

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

betway必威官方网站 1

exit程序异常时退出程序

   exit(1)程序异常时退出程序

一、总结一些误用易错的知识点

2.static修饰局部变量

2.static(静态变量)修饰局部变量

1.关于自增自减

在局部变量使用static修饰,会延长局部变量的存在期。但我们需要注意一下几点:

  在局部变量使用static修饰,会延长局部变量的存在期。但我们需要注意一下几点:

要想给一个数加一或减一我们可以:

  • 虽然static修饰变量的生存期很长,但它始终是局部变量,不能在其他函数中使用
  • static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
    全局变量的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。
    从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
    static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数,内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件
    static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
    static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
    static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
  • 虽然static修饰变量的生存期很长,但它始终是局部变量,不能在其他函数中使用
  • static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
          全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,  静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,  当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,  在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,  因此可以避免在其它源文件中引起错误。
         从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
         static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件
         static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
         static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
         static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

i = 1;

3.extern 修饰全局变量

3.extern(外部变量)  修饰全局变量

j -= 1;

extern 不但可以修饰变量还可以修饰函数

       extern 不但可以修饰变量还可以修饰函数

而C语言还允许用 和--运算符,其实这里有误导,因为 和--可以作为前缀和后缀,这样的话他们就有可能改变操作数的值,下面让我们来看看:

全局变量范围已经很广了,为什么还要用extern来修饰呢?看下面一个例子

全局变量范围已经很广了,为什么还要用extern来修饰呢?看下面一个例子

i = 1;

#include "stdio.h"

#include "stdio.h"

printf("i is %dn", i); /* prints i is 2 */

void main()

void main()

printf("i is %dn",i); /* prints i is 2 */

{

{

计算表达式i 的结果是i,但是会引发i随后进行自增:

externa;

      extern        a;

i = 1;

externb;

      extern        b;

printf("i is %dn",i ); /* prints i is 1/ */

printf("a=%d,b=%d",a,b);

      printf("a=%d,b=%d",a,b);  

第一个printf显示了i自增前的原始值,第二个printf显示了i变化后的新值;当然 --类似我就不举例了~

}

}

但在同一个表达式中多次使用 和--往往很难理解我们看看下面的例子:

int a=13,b=5;

int a=13,b=5;

i = 1;

上面例子中,在定义了a,b之前就使用它,也就是说extern扩展了全局变量的作用范围。

 

j = 2;

extern不仅上边例子这种用法,在不同文件中的全局变量也可以使用extern来使用。

上面例子中,在定义了a,b之前就使用它,也就是说extern扩展了全局变量的作用范围。

k = i j ;

4.指针函数

extern不仅上边例子这种用法,在不同文件中的全局变量也可以使用extern来使用。

i,j,k最终值分别是2,3,4而 i是2 j 是2;

定义:指针函数就是函数类型和返回值都是指针的函数。

4.指针函数

总结:不管是 i还是i 执行这条语句后i的值都加一了只是的值加一了而没变。

指针函数的一般形式:

       定义:指针函数就是函数类型和返回值都是指针的函数。

如果喜欢小编的给大家分享的特效可以点击关注小编和点赞转发也可以收藏文章,小编推荐一下自己建的C/C 共享资源群:三四零六五一六八七群里每天更新素材/视频教程/干货,只要你是真心学习的欢迎你的加入

类型 *函数名

betway必威官方网站,指针函数的一般形式:

2.typedef与#define

下面用一个例子来体会一下指针函数的妙用吧

              类型 *函数名(参数列表)

2.1.typedef

/* Note:Your choice is C IDE */

下面用一个例子来体会一下指针函数的妙用吧

C语言除了直接使用标准的类型名(如 int char float double)和自己声明的结构体、共用体、指针、枚举类型外,还可以用typedef声明新的类型名来代替现有的类型名。

#include "stdio.h"

/* Note:Your choice is C IDE */

typedef unsigned char u8;

char * SubString(char s[],int i,int j);

#include "stdio.h"

typedef unsigned int u16;

char *SubString1(char s[] ,char temp[], int i,int j);

char * SubString(char s[],int i,int j);

u8 count;

void main()

char *SubString1(char s[] ,char temp[], int i,int j);

u16 time;

{

void main()

typedef struct

char string[]="I Love C Language";

{

char *ps=NULL;

char string[]="I Love C Language"; 

u8 month;

char temp[100];

char *ps=NULL;

u8 day;

ps=SubString(string,2,9);

char temp[100];

u16 year;

printf("%sn",ps);

ps=SubString(string,2,9); 

}DATE;

SubString1(string,temp,2,9);

printf("%sn",ps);  

DATE brithday;

printf("%sn",temp);

SubString1(string,temp,2,9);

本文由betway必威发布于编程开发,转载请注明出处:extern与指针函数介绍,资深程序员分享的C语言编

TAG标签: betway必威
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。