指针详解
指针与地址
指针是存放“地址”的变量。用 & 取地址,用 * 解引用。
#include <stdio.h>
int main(void) {
int x = 42; int *px = &x;
printf("x=%d, &x=%p, px=%p, *px=%d\n", x, (void*)&x, (void*)px, *px);
return 0;
}
指针与数组
数组名在表达式中可退化为指向首元素的指针;*(a + i) 等价于 a[i]。
void fill_zero(int *a, int n) {
for (int i = 0; i < n; ++i) a[i] = 0; // *(a+i)=0
}
指针算术
指针加减会按“元素大小”步进;只对同一数组(或尾后)范围内指针做差是有定义的。
const 与指针
- 指向常量的指针:
const int *p(不能通过 p 修改指向对象); - 常量指针:
int * const p(p 自身不能改指向)。
函数指针
int add(int a, int b) { return a + b; }
int (*fp)(int, int) = add; // 声明并初始化
int r = fp(2, 3); // 通过指针调用
评论
还没有评论。
登录后可通过 API 发表评论(/api/comments)。
可在 API 文档 中使用“Authorize”按钮登录并测试。