7.C++_指针

一、指针变量的定义和使用

int a=10;

int *p=&a;      // 指针p指向a的地址  (指针p中,保存的是a的地址)

int *p=100;   //则a=100,可以通过指针来修改a的值

二、指针所占的内存空间

int a = 10;
int* p = &a;

不管什么数据类型
32位操作系统,指针占用内存4字节 (指针保存的内容就是地址)
64位操作系统,指针占用内存8字节

sizeof(p) = 4;
sizeof(int *) = 4;
sizeof(double *) = 4;
sizeof(char *) = 4;

三、空指针

空指针作用:用来初始化变量

空指针指向 地址编号为0
空指针不允许访问  (0~255之间内存系统占用,不允许访问)

 int* p = NULL;    //#define NULL 0
 *p = 100;   //错误,空指针不允许访问

四、野指针

野指针,指针变量指向非法内存空间   (危险)
在程序中,尽量避免出现野指针

int* p = (int*)0x1100;    //16进制转换为指针类型

空指针和野指针都不是我们申请的空间,所以不要访问

五、const修饰指针

1、const修饰指针(常量指针

const int *p=&a;

指针的指向可以修改      (p =&b;  //正确,指向改变了

指针指向的值不能修改       (*p = 20;  //错误,指向的值改变了

2、const 修饰常量(指针常量

int* const p=&a;

指针的指向不可以改      //p=&b;   错误,指向改变 ) 

指针指向的值可以修改      ( //*p=20;  正确,指向的值由 10 变为 20

 3、const 即修饰指针,又修饰常量

const int* const p=&a;

指针的指向不可以改      //p=&b;   错误,指向改变 ) 

指针指向的值不可以修改      ( //*p=20;  错误,指向的值由 10 变为 20

六、指针和数组

利用指针访问数组元素

arr[ i ];

*(p+i);     //指针占4字节

*p1;   p1++;   //p指的是(保存的是)arr的首地址,p1++,就是里面的地址++

七、指针和函数

指针做函数参数,修改实参的值

//值传递 (不改变实参值)
swap(a, b);        //void swap(int x, int y)

//地址传递;(改变实参值)
swap02(&a, &b);        //void swap02(int* p1, int* p2)

//引用 (改变实参值)
swap03( a, b);       //void swap03(int& x, int& y)

八、指针,指向数组后,可以通过指针的下标方式访问,数组

int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

int* p2 = arr;
for (int i = 0; i < 10; i++)
{
     cout << p2[ i ] << "   ";
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值