现在的位置: 首页 > 08 指针 > 正文

初识指针

2011年05月08日 08 指针 ⁄ 共 858字 ⁄ 字号 暂无评论

核心:值和地址的表示和相互转换

* 和 & 是一组相反的操作:
* 从指定的地址中取出值
& 获得给定的值的地址

指针的秘密就在下图:

新的类型:指针,用来保存变量的地址

为了特别指出声明的变量是指针,需要使用新的符号 *

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
int main(int argc, char *argv[])
{
    int xiaowang_money = 320;  // 小王
    int xiaochen_money = 300;  // 小陈
    int *account = NULL;       // 地址,该地址只能保存 int 变量
    account = &xiaowang_money; // 将 account 关联到 xiaowang
    xiaowang_money = xiaowang_money + 100;
    *account = *account - 200;
    printf("xiaowang's account : %p\n", &xiaowang_money);
    printf("xiaowang's account : %p\n", account);
    printf("xiaowang's account : %8x\n", account);
    printf("now xiaowang has %d RMB\n", *account);
 
    account = &xiaochen_money; // 将 account 关联到 xiaochen
    printf("xiaochen's account : %p\n", account);
    *account = *account + 300;
    printf("now xiaochen has %d RMB\n", xiaochen_money);
 
    return 0;
}

有两种方法来更改钱的多少:
1:直接修改变量
2:指针方法:操作帐户(地址)修改

【野指针】

指针在使用前必须关联已分配的变量,或者初始化为零, 也就是 NULL。

野指针,也就是指向不可用内存区域的指针。通常对这种指针进行操作的话,将会使程序发生不可预知的错误。

野指针的成因主要有两种: 指针变量没有被初始化;指针被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。

抱歉!评论已关闭.