C++指针

[b][color=red]一、变量与内存[/color][/b]

内存的最小单元是字节(8位),每个变量都有一个地址,变量int的内存大小是4个字节。

[quote]int a = 10;
int* pa= &a;[/quote]
定义一个变量pa,类型为int*,初始值为&a;称int*为指针类型,pa指向了一个int型变量,pa为指针类型的变量(简称“指针”)

*pa = 8;(*pa读写内存地址的值)

[b][color=red]二、指针和数组[/color][/b]

数组可以看成一块内存,数组名就是内存的地址(首地址),然后通过指针访问。

[quote]int* p = arr;相当于int* p = &arr[0];[/quote]

p += 1;后移1个元素,取arr[1]的值。
[quote]p = arr + 3 (p = &arr[3]),[/quote]表示p指向arr数组的第四个元素。


[b][color=red]三、指针作为函数的参数[/color][/b]

1、传递指针作为参数
[quote]void test(int* p);[/quote]
调用:int a = 0; test(&a);


2、传递数组作为参数,需要传递首地址和长度。

[quote]void max_min(int* p,int len,int* pmax,int* pmin)
{
int _max=p[0];int _min=p[0];
for(int i=1;i<len;i++)
{if(p[i]>_max) _max=p[i]; if (p[i]<_min) _min=p[i];}
[color=blue][b]*pmax[/b][/color] = _max; [color=blue][b]*pmin [/b][/color]= _min;
}[/quote]

3、把指针传给函数有什么作用?
1)效率问题:传值与传地址。
2)返回多个值:函数返回多个值,必须使用指针参数。
注:int avg(int* p,int len)等同于 int avg(int p[],int len);


4、const指针

指定的内存只能读,不能写。
int test(const int* p,int len)


[color=red][b]四、何安全使用指针[/b][/color]

用指针的时候要清楚1)指向变量、数组、指向零;2)是否失效、越界。3)空指针和野指针。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值