学习
错题
模考
我的
登录/注册/忘记密码
学习 / 指针 / 指针常见用法
指针常见用法
通过指针改变量;指针走数组
1. 通过指针改变量
指针最常见的用处:让另一处代码**够得着原来的变量**,改 `*p` 就是改那个变量。 ```c int a = 1, b = 2; int *p = &a, *q = &b; int t; t = *p; *p = *q; *q = t; /* a 变成 2,b 变成 1 */ ``` - `p = q`:让 p 改去记 q 记的那个地址(两个指针指向同一格) - `*p = *q`:把 q 所指的**值**抄到 p 所指的格子里(两个变量的值变成一样,指向可以不同) 两件事不要混。指针还没赋地址时不要写 `*p`。可以先 `p = NULL;`(空指针,谁也不指),判断 `if (p != NULL)` 再访问。
2. 指针走数组
数组名在多数表达式里就是**首元素的地址**。指针可以沿着这一排走。 ```c int a[5] = {1, 2, 3, 4, 5}; int *p = a; /* 等价于 p = &a[0] */ ``` - `*p` 是 `a[0]` - `*(p + i)`、`p[i]`、`a[i]` 是同一个元素 - `p + 1` 不是地址加 1 个字节,而是移到**下一个 int**(一步走多远由类型决定) ```c int i; for (i = 0; i < 5; i++) printf("%d ", *(p + i)); ``` 专升本先会用下标 `a[i]`,再用指针走同一排。不要写成 `p = &a;`(`a` 已经是首地址;`&a` 是整排的地址,类型不同)。 `p++` 会让 p 指向下一个元素。循环里若还要回头,先另存一份,或不要改原来的 p。
开始练习
返回指针
登录
注册
忘记密码
点击此处输入用户名
点击此处输入密码
登录
点击此处输入用户名
点击此处输入密码
点击此处输入邮箱
发送验证码
点击此处输入验证码
点击此处输入邮箱
发送验证码
点击此处输入验证码
点击此处输入新密码