C语言---初识指针-1 - 教程
2025-12-12 09:55 tlnshuju 阅读(39) 评论(0) 收藏 举报什么是指针?
存储内存地址的变量,用于间接访问信息。凭借指针许可操作内存中的数据,提高软件的灵活性和效率。指针在C/C++中尤为重要,可用于动态内存分配、函数参数传递等场景。就是指针
指针的定义

指针变量
指针变量是一种特殊的变量,用于存储内存地址。通过指针变量,可以直接访问或修改内存中的数据,实现对数据的高效运行。
指针访问
指针的类型决定了访问的能力。
访问指针所指内存当中的数据的操作称为解引用;运用符号 * 来访问。



指针变量的大小
指针变量的大小取决于架构的架构和编译器的达成。通常,指针的大小与系统的地址总线宽度直接相关。
在32位系统上,指针变量通常占用4字节(32位),因为地址空间为32位。
在64位系统上,指针变量通常占用8字节(64位),因为地址空间为64位。
注意事项
1.指针类型必须与其指向的数据类型严格匹配。类型不匹配可能导致信息解析错误或内存对齐难题。
2.指针变量的名字(不带*)。
3.指针变量占用的大小,跟数据类型无关,跟编译器有关。
4.给指针变量赋值的时候,不能把一个数值赋值给指针变量。
指针的运算
前提:保证内存空间连续
当前指针指向位置的相对偏移。就是加减整数:指针变量存储的是内存当中的地址,通过指针可以访问指定地址,如果对指针做加减整数的操作,实质上

注:数组名表示首元素地址
指针解引用访问进阶
对指针进行解引用,一次能访问几个字节和指针类型有关。
eg:
int*类型对指针进行解引用操作,一次访问4个字节,对char*类型,一次只能访问1个字节。

为什么第一个开头为11,第二个为44?
这称为字节存储顺序-大小端
字节存储顺序-大小端
大小端 是计算机系统中用于描述多字节数据在内存中存储顺序的概念。它决定了数据的高位字节和低位字节在内存中的物理排列顺序。
11 22 33 44 44 33 22 11
大端 小端 小端 大端
硬件决定字节序
1.大小端 (字节序)的存储顺序主要取决于系统的硬件架构(CPU设计)。编译器会根据目标硬件生成对应的机器码。
2.大端序 (Big-Endian):高位字节存储在内存的低地址处·小端序(Little-Endian):低位字节存储在内存的低地址处
3.常见架构:×86、×64架构通常使用小端序;网络字节序通常使用大端序
野指针
类型:
指指向无效内存地址或已释放内存的指针。这类指针可能由以下原因导致:就是野指针
- 指针指向的对象被释放(如动态内存释放后未置空)。
- 指针未初始化(未指向有效的内存地址)。
- 指针超出变量作用域(如指向局部变量的指针在函数返回后被运用)。



避免方法
1.倘若明确知道指针指向哪里就直接赋值地址,如果不知道指针应该指向哪里,可以给指针赋值NULL
2.防止指针越界
3.禁止返回局部变量的地址
4.对于不再采用的指针变量要及时置为NULL
指针的作用
作用1:指针传参
指针传参是指在函数调用时,将变量的地址(指针)作为参数传递给函数,使得函数可以通过该指针直接访问或修改原变量的值。
示例习题:两数值交换

补充:static防止变量回收

作用2:函数返回多个值
在C/C++中,函数通常只能通过return语句返回一个值。但通过指针参数,可以实现间接修改外部变量的值,从而模拟“返回多个值”的效果
示例习题:返回数组中最大值与最小值
作用3:函数的结果与计算状态分开
指针在函数设计中可有效隔离计算结果与中间状态,避免返回值被单一用途限制。
示例习题:求余数

浙公网安备 33010602011771号