征服C指针

本文深入探讨了C语言中的内存管理技术,包括虚拟地址的概念、不同类型的变量及其存储方式,以及如何理解复杂的声明语法。重点讲解了全局变量、静态变量、局部变量的作用域和生存期,特别强调了自动变量在栈中的存储机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第2章 C是怎么使用内存的

2.1 虚拟地址

    在如今的运行环境中,应用程序面对的是虚拟地址空间。

    fgets(buf,sizeof(buf),stdin);  

    sscanf(buf,"%d",&hoge);  // 将buf写入到hoge


2.2 C 的内存使用方法

2.2.1 C的变量种类

    1. 全局变量

    2. 静态变量-- 作用范围只在当前文件有效

    3. 局部变量-- 函数中声明的变量 作用域只在该函数中,除非在该局部变量前加 static

2.2.2 输出地址

    【函数、字符串常量】

    【静态变量(函数内/文件内)】

    【利用malloc分配的内存区域】

     \\\

     \\\

    【自动变量】


2.3 函数和字符串常量

2.4 静态变量

2.5 自动变量

    C语言中,通常将自动变量保存在栈中,内存区域可以重复利用。

*   在调用方,参数“从后往前”按顺序被堆积在栈中~~!!!

    

    内存中存储方式:

    假设一个栈:从上往下地址依次增大

    main()在较大地址位置,调用函数在较小地址位置。


第三章 揭秘C的语法—它到底怎么回事


3.1 解读C的声明

3.1.1 用英语来读

3.1.2 解读C的声明

    步骤:

    1. 首先着眼于标识符(变量名或者函数名)

    2. 从距离标识符最近的地方开始,依照优先次序解释派生类型(指针、数组和函数) 优先次序如下:

1)用于整理声明内容的括弧

2)用于表示数组的[],用于表示函数的()

3)用于表示指针的*

    3. 解释完派生类型,使用“of”、“to”、“returning”将它们连起来。

    4. 最后追加数据类型修饰符(左边,int、double等)

    eg. int(*func_p)(double)

    func_p is pointer to function(double) returning int


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值