C 中的指针
指针是 c 编程中的一个基本概念,使您能够直接访问和操作内存。理解指针对于有效且高效的 c 编程至关重要。
什么是指针?
指针是代表内存地址的值。它指向特定的内存位置,允许您访问和修改存储在该位置的值。
基本示例
int some_var = 4;
int *pointer_to_some_var = &some_var;
这里&some_var是some_var的地址;
符号 | 功能 | 示例 |
---|---|---|
一些_变量 | 将值保存在特定的内存位置 | int x = 3; |
* | 指向某个变量的内存地址 | int *pX; |
& | 保存以下变量的地址值 | &x; |
引用和解除引用
符号 | 它包含什么/意味着什么 | 示例代码 |
---|---|---|
声明变量 | 变量的值 | `int x = 10;` |
指针 | 指针指向某个地址 | int *p = &x; |
变量地址(&) | 变量的内存位置(例如:0x7ffe2f14f97c) | printf("变量x的地址是%p",(void*)&x); |
指针以前面的 &(指针变量)来命名自己 | 指针的内存地址(例如:0x7ffe2f14f97c) | printf("指针p的地址是%p",(void*)&p); |
以 * 开头的指针(不要与指针类型的初始化混淆) | 指针指向的值(也称为解引用) | printf("指针p指向的值为%d",*p); |
为什么要使用指针?
指针有助于管理作用域问题,特别是在使用具有结构的函数时。通过使用指针,您可以通过内存地址访问函数中的超出范围的变量。
我们通过提供指向此类变量(或结构)的内存地址的指针来使用指针来访问函数中的范围外变量。
例子
#include <stdio.h>
#include <stdbool.h>
结构员工类型
{
整数ID;
收入;
布尔员工;
};
无效initialize_employee(结构employee_type * e){
e->id = 0;
e->收入=0;
e->员工=真;
返回;
}
int main(){
结构雇员类型拉尔夫;
初始化_员工(&Ralph);
printf("%d", 拉尔夫.收入);
}
</stdbool.h></stdio.h>
常见陷阱
未初始化的指针:始终初始化指针。未初始化的指针指向随机内存位置,导致未定义的行为。
悬空指针:不要使用指向已释放或超出范围的内存的指针。
指针算术:小心指针算术,以避免访问内存越界。