了解指针(1)-- 指针的四要素

    指针是 C/C++ 功能最强大的工具之一,也是最危险的,因为他们允许执行对计算机不友好的操作,比如使用未经初始化的指针来访问内存或者试图释放同一个内存块两次。 本小节主要介绍指针的基本知识。

    指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。指针的四要素:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的内存区、指针本身所占据的内存区。

1.指针的类型
    声明指向特定类型的指针,使用格式:
    typename * pointername;
例如:
(1)int* ptr;        //指针的类型是 int*
(2)char* ptr;        //指针的类型是 char*
(3)int** ptr;        //指针的类型是 int**
(4)int (*ptr) [3];    //指针的类型是 int(*)[3]
(5)int* (*ptr) [4];    //指针的类型是 int*(*)[4]

2.指针所指向的类型
    当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容的当做什么类型来对待。
例如:
(1)int *ptr;         //指针所指向的类型是 int
(2)char *ptr;         //指针所指向的的类型是 char
(3)int* *ptr;         //指针所指向的的类型是 int*
(4)int (*ptr) [3];     //指针所指向的的类型是 int()[3]
(5)int* (*ptr) [4];     //指针所指向的的类型是 int*()[4]

3.指针的值
    指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。
    给指针赋值,可以对变量名应用&运算符,来获得被命名的内存的地址, new 运算符返回未命名的内存的地址。
例如:
double * pn;
double * pc;
double bubble = 3.2;
pn = &bubble;        //把bubble的地址赋予pn
pc = new char;        //把新分配的内存(char类型)的地址赋予pc

4.指针本身所占据的内存区
    指针本身占了多大的内存?你只要用使用 sizeof(指针的类型) 测试一下就知道了。在 32 位系统中,所有类型的指针的值都是一个 32 位整数。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值