《零基础学C语言》第19章 生存期、作用域与可见域

26 篇文章 2 订阅 ¥25.00 ¥99.00

第19章 生存期、作用域与可见域

有时兴致勃勃地写完一大篇的程序,编译连接后却显示了很多奇奇怪怪的错误信息,比如某某变量未定义、某某函数找不到等。你可能在嘀咕,这个函数明明在这里啊?那不是某某变量吗?是不是编译器有问题啊?读完本章你就会发现,编译器没有问题,是函数、变量的作用域、生存期与可见域在作怪。

生存期、作用域与可见域可能涉及的程序要素有:变量(普通类型的变量、结构体变量和共用体变量的统称)、常量、函数以及结构体、共用体的定义等。

本章包含的知识点有:

·程序的内存分配问题

·auto、register、extern、static变量

·函数的作用域和可见域

·结构体的作用域和可见域

19.1 内存分配

变量名、函数名等都对应着内存中的一块区域,那么这些实体在内存中是如何存放的呢?程序又是如何使用这些变量的?下面首先从C程序内存分配入手,一步步来回答这些问题。

19.1.1 内存分区

一个由C编译的程序占用的内存大致分为以下几部分。

·栈区(stack):由编译器自动分配释放,存放函数的参数值、局部变量的值等。

·堆区(heap):一般由程序员分配释放(动态内存申请与释放),若程序员不释放,程序结束时可能由操作系统回收。

·全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在同一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,该区域在程序结束后由操作系统释放。

·常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值