当前位置: 首页 > news >正文

C 语言指针与作用域详解

一、指针基础概念

(一)指针的本质

指针是 C 语言中一个重要的概念,其本质是内存地址。在计算机内存中,每个字节都有唯一的编号,这个编号就是我们所说的内存地址,而指针变量就是用于存储这些内存地址的变量。

(二)指针的声明语法

基本数据类型* 标识符(=初始化);

  • 习惯上,指针变量名会以p开头,例如:int* p;表示声明一个指向整型数据的指针变量p
  • 指针变量的类型必须与它所指向的数据类型一致,这样才能正确地访问和操作对应内存空间的数据

(三)指针的内存大小

指针变量本身在内存中所占的空间大小取决于计算机的架构:

  • 在 x86 架构(32 位系统)中,指针占4 字节
  • 在 x64 架构(64 位系统)中,指针占8 字节

(四)特殊符号&的多重含义

  • 在指针中:代表取地址操作符,用于获取变量的内存地址,例如&a表示获取变量a的地址
  • 在引用中:代表引用声明,用于定义变量的别名
  • 按位与操作:对两个操作数进行按位与运算
  • 逻辑与操作(&&):用于逻辑表达式中,进行联言判断

(五)解引用操作

解引用操作是通过指针访问其所指向的内存单元中存储的值,形象地说就像 “偷家”—— 根据地址找到里面的东西。

  • 语法:*地址
  • 示例:若p是一个指向整型变量a的指针,那么*p就表示访问a的值

(六)特殊指针

  • 野指针:如同 “熊孩子”,是指向未定义或非法内存地址的指针。访问野指针会导致程序崩溃或产生不可预知的结果,是编程中需要极力避免的问题
  • 空指针:指向空地址的指针,在 C 语言中通常用NULL0来表示。空指针是一个合法的指针值,用于表示指针不指向任何有效内存地址

二、作用域概念

(一)作用域的定义

作用域是程序中定义的变量、函数等实体可以被访问的区域范围。在 C 语言中,作用域主要由花括号{}来界定:

{ // begin// 这里定义的变量、函数等只在这个花括号内有效// 代表一个作用域(在里面才有作用)
} // end 位置

(二)作用域的重要性

  • 作用域决定了标识符的可见性和生命周期
  • 在一个作用域内定义的变量,只能在该作用域及其嵌套的子作用域中访问
  • 当程序执行离开某个作用域时,该作用域内定义的自动变量会被销毁,内存空间被释放

合理理解和运用指针与作用域的概念,是掌握 C 语言编程的关键基础,有助于编写更高效、更安全的代码。在实际编程中,要特别注意避免野指针问题,合理规划变量的作用域,确保程序的稳定性和可靠性。

http://www.lryc.cn/news/581815.html

相关文章:

  • 计算机网络实验——互联网安全实验
  • SQL Server从入门到项目实践(超值版)读书笔记 20
  • Solidity——什么是selfdestruct
  • 数据结构---链表结构体、指针深入理解(三)
  • nginx的使用
  • 机器学习手写字体识别系统:技术演进与应用实践
  • Qt:QPushButton、QRadioButton、QCheckBox
  • 1.1_4 计算机网络的分类
  • ARMv8 创建3级页表示例
  • QML与C++交互之QML端信号绑定C++端槽函数
  • Linux proxy设置
  • TensorFlow 开发中,合理的项目目录结构
  • 8.4.2_2堆的插入删除
  • [netty5: WebSocketClientHandshaker WebSocketClientHandshakerFactory]-源码分析
  • WSL2配置freesurfer
  • Docker Model Runner Chat
  • 嵌套容器是隐射宿主机的路径而不是容器的路径
  • 深入解析 document.write、innerHTML 和 innerText 的区别
  • 使用PyTorch实现Softmax回归(Mnist手写数字识别)
  • linux下进程之间socket通信c程序例程
  • 6、构建更加丰富的页面
  • Redis--主从复制详解
  • Linux操作系统之文件(五):文件系统(下)
  • 进程终止:exit()与_exit()深度解析
  • 【HarmonyOS】鸿蒙6 CodeGenie AI辅助编程工具详解
  • Linux-磁盘管理
  • electron中的IPC通信
  • python-if结构、三目运算符
  • 用.NET9+Blazor+Semantic Kernel,打造企业级AI知识库和智能体平台——AntSK深度解读
  • ZSGuardian ---AI赋能,新一代研发管理守护平台 -即将上线