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

【C语言】(7)—指针1

文章目录

  • 一、内存和地址基础
    • 1.1 内存的基本概念
    • 1.2 地址与指针的关系
  • 二、指针变量基础
    • 2.1 取地址操作符(&)
    • 2.2 指针变量声明与初始化
  • 三、指针类型与指针运算
    • 3.1 指针类型的重要性
    • 3.2 指针运算
  • 四、const与指针

一、内存和地址基础

1.1 内存的基本概念

1.1 内存的基本概念
计算机内存可以想象成一栋巨大的宿舍楼,每个房间(内存单元)都有一个唯一的编号(地址)。CPU通过这个地址来访问特定的内存空间。

内存单元:

每个内存单元大小为1字节(8位)

每个内存单元都有唯一地址

地址通常用十六进制表示(如0x006FFD70)
计算机存储单位:

1 Byte = 8 bit
1 KB = 1024 Byte
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
1 PB = 1024 TB

1.2 地址与指针的关系

在C语言中,我们使用指针来存储和操作内存地址:
内存单元的编号 == 地址 == 指针

二、指针变量基础

2.1 取地址操作符(&)

通过&操作符可以获取变量的内存地址:
#include <stdio.h>int main() {int a = 10;printf("变量a的地址:%p\n", &a);return 0;
}

2.2 指针变量声明与初始化

int a = 10;
int *pa = &a;  // 声明一个指向int的指针,并初始化为a的地址

三、指针类型与指针运算

3.1 指针类型的重要性

指针类型决定了:解引用时能访问多少字节指针加减整数时的步长
int n = 0x11223344;
int *pi = &n;
char *pc = (char *)&n;*pi = 0;  // 修改4个字节
*pc = 0;  // 只修改1个字节

3.2 指针运算

指针支持三种基本运算:

指针±整数:根据类型决定步长

c

int arr[5] = {1,2,3,4,5};
int *p = &arr[0];
printf("%d\n", *(p+2));  // 输出arr[2]的值3

指针-指针:计算两个指针之间的元素个数

c

int diff = &arr[4] - &arr[0];  // 结果为4

指针关系运算:比较指针位置

c

while(p < &arr[5]) {printf("%d ", *p++);
}

四、const与指针

int a = 10, b = 20;// 1. 指向常量的指针
const int *p1 = &a;
// *p1 = 30;  // 错误,不能通过p1修改a
p1 = &b;     // 正确,可以改变指向// 2. 指针常量
int * const p2 = &a;
*p2 = 30;    // 正确,可以修改a的值
// p2 = &b;  // 错误,不能改变指向// 3. 指向常量的指针常量
const int * const p3 = &a;
// *p3 = 40;  // 错误
// p3 = &b;   // 错误

相关文章:

  • ActiveMQ 安全机制与企业级实践(一)
  • next中的server comonent中如何共享session
  • 2025 后端自学UNIAPP【项目实战:旅游项目】1、创建项目框架
  • 物理服务器紧急救援:CentOS系统密码重置全流程实战指南
  • 关于论文中插入公式但是公式相对于段落的位置偏上应该如何调整备份
  • UE5 GAS开发P47 游戏标签
  • STL?string!!!
  • 【Hive入门】Hive安全管理与权限控制:审计日志全解析,构建完善的操作追踪体系
  • 【大数据】服务器上部署Apache Paimon
  • UE5 使用插槽和物理约束对角色新增的饰品添加物理效果
  • Nginx安全防护与HTTPS部署实战
  • 【愚公系列】《Manus极简入门》021-音乐创作助手:“音符魔术师”
  • 【Linux网络】应用层协议HTTP
  • 互联网大厂Java求职面试:云原生与AI融合下的系统设计挑战-1
  • ShardingJdbc-水平分表
  • 标签语句分析
  • Mac电脑,idea突然文件都展示成了文本格式,导致ts,tsx文件都不能正常加载或提示异常,解决方案详细说明如下
  • 【Python】一键提取视频音频并生成MP3的完整指南 by `MoviePy`
  • git中android studio不想提交文件
  • 【Linux系统】探索进程等待与程序替换的奥秘
  • 上海国际电影节特设“走进大卫·林奇的梦境”单元
  • Neuralink脑接设备获FDA突破性医疗设备认证
  • 茹诗瑶评《失去伊斯坦布尔》︱“帝国主义者”的多重面相
  • 独家专访|白先勇:我的家乡不是哪个地点,是中国传统文化
  • 巴菲特再谈投资日本:希望持有日本五大商社至少50年
  • 网警查处编造传播“登顶泰山最高可得3万奖金”网络谣言者