学习重点 :

1.全面掌握变量的特性,了解内存管理的概念.

2.全面掌握函数的使用.

局部变量与全局变量:

局部变量:就是在函数内部定义的变量.局部变量只在本函数内有效,也就是只能在本函数内使用它.

全局变量:就是在所有函数(包括main函数)外部定义的变量.全局变量在整个源文件中有效,故全局变量可以在源文件中的任何地方使用.

注 : c语言中,允许全局变量与局部变量重名,但全局变量不影响局部变量的值,也就是实际使用的是局部变量的值.

变量的特性 :

1.存储期 : 也称为生存期,表示变量在内存中存在的时间的长短.

静态存储期 :

在程序编译时就分配内存空间并保持不变,程序执行结束后才释放.

动态存储期 :

在程序执行并使用该变量的时候分配内存空间,使用完毕立即释放.

2.链接点 : 表示变量能在哪些范围内使用.

内部链接 : 只能在源文件内部使用.

外部链接 : 能在源文件内部和外部文件中使用.

空连接 : 只能在代码块内(函数内部)使用.

3.作用域 : 表示变量在哪些范围内起作用,由链接点决定.

1.局部变量 : 定义与声明不区分(定义之后可以直接使用).

a.自动变量 : 使用auto关键字修饰存储类型,一般缺省.

定义声明 : [auto] <数据类型> <变量名>; //一般auto不写 int a;直接这样普通定义就行

变量特性 : 动态存储期,空链接,代码块作用域.

b.静态局部变量 : 使用static关键字修饰存储类型.

定义声明 : <static> <数据类型> <变量名>; //static int a;

变量特性 : 静态存储期,空链接,代码块作用域.

c.寄存器变量 : 使用register关键字修饰存储类型.

register是一个请求命令,暗示该变量将被频繁使用,请求保存在cpu寄存器中.用register修饰的变量的值必须是单个值,数据

长度小于或等于整型数据长度.因为变量的值可能存放在寄存器中,所以不能使用取地址符'&'获取该变量的地址.

定义声明 : <register> <数据类型> <变量名>; //register int a;

变量特性 : 动态存储期,空链接,代码块作用域.

2.全局变量 : 定义与声明有些地方需要区分.

a.普通全局变量 :

定义 : <数据类型> <变量名>;

声明 : 引用源文件内部普通全局变量不需要声明.

引用外部文件普通全局变量需要进行申明 : <extern> <数据类型> <变量名>;

变量特性 : 静态存储期,外部链接,源文件内部及外部文件作用域.

b.静态全局变量 :

定义 : <static> <数据类型> <变量名>;

声明 : 引用静态全局变量不需要申明.

变量特性 : 静态存储期,内部链接,源文件内部作用域.

注 : 静态存储期的变量并不一定是静态变量.比如普通全局变量.

内存管理:

程序一般是保存在计算机的外存中,运行时自搬移到内存中进行运行.

C语言中定义4个内存区间: 代码区,静态存储区,栈区,堆区.

1.代码区 : 用于存放程序中的代码,属性只读.

2.静态存储区: 用于存放普通全局变量,静态变量(静态全局变量,静态局部变量),以及常量.

3.动态存储区:

栈区 : 用于存放普通局部变量.

堆区 : 由程序员自行决定申请和释放的内存空间,称之为堆区.

典型的例子就是定义结构体指针后,需要使用malloc()申请结构体指针指向的内存空间.

函数:

1.函数的定义 : [static] <函数返回值数据类型> <函数名>(形参表)

{

......

return 表达式;

} //例子:static int test(int x);

static关键字说明该函数只能在源文件内部使用,为可选项.

2.函数的声明 : [extern] <函数返回值数据类型> <函数名>(形参表);

extern关键字表明该函数在被调用时,在外部文件中查找函数的定义,为可选项目.

3.函数的调用 : 被调函数必须时已经在调用函数之前声明,或者被调函数在调用函数之前定义.

调用方法 : 函数名(实参表);

4.指针函数 : 函数的返回值是一个指针.

定义 : [static] <函数返回值数据类型*> <函数名>(形参表)

{

......

return p; //p是一个指针变量.

}

思考题目 : 下面哪个函数能使调用函数读到"hello world!"这个字符串.

char *fun() char *fun1()

{ {

char arr[] = "hello world!"; char *p = "hello world!";

return arr; return p;

} }

结果可以发现char *fun1()返回了字符串"hello world!",但是char fun();没有返回"hello world!",这是为什么呢???还记得之前说的静态储存区嘛???

静态储存区存放常亮而"hello world!"便是一个常亮储存在静态储存区中,然而char arr[];这是普通全局局部变量,所以fun()返回的是一个野指针因为fun()程序结束后就自行释放内存空间,而char *p不同这不是一个普通变量这是一个指向常量首地址的指针,所以它在静态储存区中,所以然后可以返回值啦。因为程序没结束,静态储存区中内存空间还没有没有释放。

5.函数指针 : 指针指向的是函数的首地址,也就是用来存放函数入口地址的指针.

函数指针的定义 : <函数返回值数据类型> (*函数指针变量名)(函数形参表);

对应的函数的定义 : <函数返回值数据类型> <函数名>(函数形参表)

{

......

return 函数返回值;

}

函数指针使用方法 : 将函数名(实际就是函数的入口地址)赋值给对应的函数指针,通过对函数指针的使用即可实现对对应函数的调用.

6.函数特殊参数的传递:

函数的形参是指针:

当指针作为实参传递给函数时,对指针进行解引用会直接改变指针指向的存储空间中的数据.

当数组作为实参传递给函数时,实际传递的是同级别的指针.

看到这各位同学是否对C语言感兴趣了呢???小编这里为大家搜集了一份C/C++学习资料,如果有兴趣的同学可以进学习群:前面八七三,中间五二一,后面八零三。连起来就可进群然后免费领取一份学习资料哦!!!!希望大家在C的道路上越走越远!!

服务器经常崩溃??让我们来看看简单的内存知识:C语言——内存管理相关推荐

  1. win8修改炉石服务器,炉石传说:新的炸服者出现了,这套操作下来就可以成功让炉石服务器成功崩溃...

    原标题:炉石传说:新的炸服者出现了,这套操作下来就可以成功让炉石服务器成功崩溃 最近炉石传说的福利还是很给力的啊,先是登陆送5个卡包,随后就是送竞技场门票加一个200金币的传说任务,然后,乱斗一开两个 ...

  2. 开机不进去桌面执行gui_电脑系统崩溃进不去,简单几步设置U盘,快速找回桌面重要文件...

    hello~我可爱的粉丝们!今天粮小白分享一个电脑系统崩溃无法开机,怎么把电脑数据保存备份的小技能,就来就点个关注吧.每天更新生活必备技能哦. 电脑系统崩溃进不去,简单几步设置U盘,快速找回桌面重要文 ...

  3. 小程序秒杀活动服务器,微信小程序官方上线张大仙周年活动,人数太多把服务器弄崩溃了...

    原标题:微信小程序官方上线张大仙周年活动,人数太多把服务器弄崩溃了 说起如今人气最旺的<王者荣耀>主播,莫过于就是靠着一手"素质直播"走遍天下的张大仙了.之前由于一些合 ...

  4. 光纤终端服务器,[原创]简单介绍光缆终端盒知识

    原标题:[原创]简单介绍光缆终端盒知识 光缆终端盒又叫光纤终端盒,很多工程商也叫光缆盘纤盒,是在光缆敷设的终端保护光缆和尾纤熔接的盒子,主要用于室内外光缆的直通熔接和分支接续及光缆终端的固定,起到尾纤 ...

  5. 糖豆人显示此服务器正在进行游戏,糖豆人服务器频繁崩溃,west滚石教技巧,蓝哥踢球做内鬼...

    原标题:糖豆人服务器频繁崩溃,west滚石教技巧,蓝哥踢球做内鬼 自从糖豆人游戏开放以来,大批玩家涌入,造成糖豆人服务器拥堵,一度出现崩溃.隔三差五就会来一次.玩家正玩得兴起,突然的崩溃让玩家瞬间感悟 ...

  6. 战争学院服务器不稳定,英雄联盟服务器突然崩溃坑玩家!战争学院玩家全被强制下线...

    英雄联盟国服服务器在这两天出现了严重的卡顿现象,电信区的几个热门大区均已沦陷,艾欧尼亚和黑色玫瑰在无任何活动期间需要长时间的排队等待,并且这几个排名靠前的大区,游戏内部均出现严重的网络延迟,导致大批玩 ...

  7. 网吧大哥服务器维修,《绝地求生》服务器又崩溃!网吧老板快要哭了

    要问最近最流行的游戏是什么?相信不少游戏爱好者都会大呼:"绝地求生"!这款射击类大逃生概念游戏从9月开始爆火,在过去两周的活跃玩家数量甚至超过<CS:GO>和<D ...

  8. 我的世界服务器自动被踢怎么可以进去,我的世界中国版服务器中如何解决玩家作弊的简单方法...

    原标题:我的世界中国版服务器中如何解决玩家作弊的简单方法 我的世界中国版,作弊是件可耻的行为,可能有很多玩家遇到了其他玩家在游戏中作弊,那么我们应该如何解决这个问题?今天就由超好玩小编来告诉大家我的世 ...

  9. 王者荣耀服务器维护费用,王者荣耀服务器全线崩溃!事后只补偿100铭文!网友:卸载了...

    原标题:王者荣耀服务器全线崩溃!事后只补偿100铭文!网友:卸载了 王者荣耀迎来了S16赛季才一个礼拜的时间就出现了乌龙时间!就在昨日下午16.00-16.20时,王者荣耀服务器出现无法登陆游戏提示, ...

最新文章

  1. 【Flutter】遇见错误
  2. 三招教你如何判断ERP软件是否适用
  3. Linux下ipconfig分析及C语言实现
  4. docker 中部署一个springBoot项目
  5. eclipse 达梦 连接_达梦Hibernate Spring集成开发示例
  6. java jmf 视屏监控的核心代码_JMF(Java Media Framework)使用摄像头
  7. ssky-keygen + ssh-copy-id 无密码登陆远程LINUX主机
  8. 11 操作系统第三章 内存管理 内存的基本知识 内存管理 内存空间扩充 连续分配管理方式
  9. HTML的iframe标签的滚动条
  10. 苹果:我们从未向中国政府透露源代码
  11. 2021年全球手机市场,三星和华为都输了,其他手机企业赢了
  12. 为什么一买就跌一卖就涨,主力如何利用AI大数据击穿散户的心理防线?
  13. 趣图:大佬如何解决bug的
  14. (JAVA编成练习):递归的使用,简单的列子帮你理解递归。
  15. 教你快速高效接入SDK——手游聚合SDK框架中渠道SDK部分的接入(就是实现抽象层的接口而已)
  16. 【Spire.PDF】Spire.PDF导出报告之一获取与破解
  17. 软件项目管理实验一附加
  18. html实现简单分享功能
  19. win7系统卸载完WPS后,office2007图标显示不正常,及每次打开都要进行配置的问题的解决方案
  20. PTA 多项式A除以B (25 分)

热门文章

  1. awk教程入门与实例练习(二)
  2. Problem B: C语言习题 矩阵元素变换
  3. Linux系统CPU相关信息查询
  4. 存储芯片在智能化产业链中扮演的角色将更加重要
  5. 任务计划、chkconfig工具、systemd管理服务、unit、target
  6. Javascript中Base64编码解码的使用实例
  7. 微软职位内部推荐-Principal Group Program Manager
  8. disabling directory browsing
  9. FileSystemObject和Folders使用详细介绍
  10. postfixadmin 导入数据库出错 ERROR 1062 (23000) at line 29